JAVA面向对象的数据库连接

时间:2014-07-06 11:58:19

标签: java mysql database connection

我将程序连接到数据库时遇到问题,当我在一个文件中执行所有操作然后它工作时,但是当我想让它面向对象时,它会调用NullPinterException。如果你可以帮助我,有代码:

Main.java:

public static void main(String[] args) {
    try{
    DbConnect.ConnectToDB();
    }catch(Exception e){
        System.out.println(e);
    }
}

DatabaseConnect.java:

public class DatabaseConnect {
private static Connection connect;
public static String isClosed;

public void ConnectToDB(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        connect = DriverManager.getConnection("jdbc:mysql://127.0.0.1/warsztattest", "root", "");
    }catch(Exception e){
        System.out.println(e);
    }
}
public String CheckConn() throws SQLException{
    if (connect.isClosed()){
        isClosed = "Disconnected";
    }else{
        isClosed = "Connected";
    }
    return isClosed;
}

}

3 个答案:

答案 0 :(得分:1)

您无法以静态方式调用非静态方法。如果您将ConnectToDB()声明为静态方法,或者在主类中实例化DatabaseConnect,则代码应该有效。

编辑:我认为你应该将这些方法声明为静态,因为每次你想要使用数据库连接时都没有合理的意义来实例化类,特别是因为每个对象都具有相同的属性。会浪费资源。

答案 1 :(得分:0)

我试图对您的代码进行微小的更改,因此这不是我在代码中使用的解决方案(例如:没有定义构造函数)。我没有测试过,但它应该可以工作。

Main.java:

public static void main(String[] args) {
    try{
    DatabaseConnect dbc = new DatabaseConnect();
    dbc.ConnectToDB();
    String status = dbc.isClosed() ? "Closed" : "Open";
    System.out.println("Connection status: "+status);
    }catch(Exception e){
        System.out.println(e);
    }
}

DatabaseConnect.java:

public class DatabaseConnect {
private Connection connect;

public void ConnectToDB(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        connect = DriverManager.getConnection("jdbc:mysql://127.0.0.1/warsztattest", "root", "");
    }catch(Exception e){
        System.out.println(e);
    }
}
public String CheckConn() throws SQLException{
    return connect.isClosed();
  }
}

答案 2 :(得分:0)

只需实例化DatabaseConnect对象,然后调用其方法

public static void main(String[] args) {
    try{

    //DbConnect.ConnectToDB();

    DatabaseConnect dataConnect = new DatabaseConnect();
    dataConnect.ConnectToDB();
    dataConnect.CheckConn();

    }catch(Exception e){
        System.out.println(e);
    }
}