1

私はxamppmysqlを使用していますが、このコードはJDBCプログラム用です。実際には、dbconnect.javaとlogin.javaの2つのクラスがあります。別のクラス(つまり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

最も簡単な方法は、connect メソッドを nonvoidにして接続を返すことです。

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 オブジェクトを返し、それをログイン クラスに割り当てる必要があります...接続オブジェクトは null です...

于 2013-02-19T15:07:11.340 に答える