1

我正在使用 xampp mysql,此代码用于 JDBC 程序。实际上有两个类,一个是 dbconnect.java,另一个是 login.java。我想访问另一个类(即login.java)中的连接对象(即conn)。但是我没有正确的想法,我在这里包含了代码,请建议我有什么问题以及解决方案是什么?

这是 dbconnect.java 的代码

package stundentrecord;

import java.sql.Connection;
import java.sql.DriverManager;

public class dbconnect {
    public void conect(){
        Connection con = null;
        String url = "jdbc:mysql://localhost:3306/";
        String db = "studentRecord";
        String driver = "com.mysql.jdbc.Driver";
        String user = "root";
        String pass = "";
        try{
            Class.forName(driver);
            con = DriverManager.getConnection(url + db, user, pass);
            if(con==null){
                System.out.println("Connection cannot be established");
            }
            // con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

这是另一个名为 login.java 的类的代码

if(source==login){
    if(username!=null && password!=null) {
        Connection conn= null;
        Statement stmt = null;
        dbconnect db = new dbconnect();
        db.conect();
        String query = "SELECT * from userlogin";
        try{
            stmt=(Statement) conn.createStatement(); // here is the problem
            ResultSet rs = stmt.executeQuery(query);  // here is the problem 
            while (rs.next()) {
                String user = rs.getString("username");
                String pass=rs.getString("password");
                System.out.println("Welcome "+user);
            }
        } catch(SQLException ex){
            ex.getMessage();
        }
        StundentRecord SR = new StundentRecord();
    } else {
        JOptionPane.showMessageDialog(null,"Username or password field is empty","error    !!",JOptionPane.ERROR_MESSAGE);
    }
}

真正的问题是什么以及如何解决?

4

2 回答 2

6

最简单的方法是将连接方法设为非void并返回连接:

public Connection conect() {
    Connection con = null;
    String url = "jdbc:mysql://localhost:3306/";
    String db = "studentRecord";
    String driver = "com.mysql.jdbc.Driver";
    String user = "root";
    String pass = "";
    try {
        Class.forName(driver);
        con = DriverManager.getConnection(url + db, user, pass);
        if (con == null) {
            System.out.println("Connection cannot be established");
        }
        return con;
    } catch (Exception e) {
        System.out.println(e);
    }
    return null;
}
于 2013-02-19T15:02:32.623 回答
0

您应该从连接类返回您的 CONNECTION 对象并将其分配给您的登录类...现在您的连接对象为空...

于 2013-02-19T15:07:11.340 回答