繁体   English   中英

如何在Java中的另一个类中访问连接对象?

[英]how to access connection object in another class in java?

我正在使用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);
    }
}

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

最简单的方法是使connect方法成为非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;
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM