2013-02-19 86 views
1

我使用的是xampp mysql,这段代码是针对JDBC程序的。实际上有两个类,一个是dbconnect.java,另一个是login.java。我想访问另一个类(即login.java)中的连接对象(即conn)。但我没有适当的想法,我已经在这里包含代码,请告诉我什么是问题和解决方案是什么?如何访问java中另一个类的连接对象?

这是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); 
    } 
} 

什么是真正的问题,以及如何解决它的代码?

+1

请格式化您的代码,这是不可读的。遵循Java约定(类是第一个大写字母,等等......) – m0skit0 2013-02-19 15:00:48

+0

@SotiriosDelimanolis如果你阅读代码,你会明白设计问题 – 2013-02-19 15:01:29

+1

@LuiggiMendoza如果你可以阅读任何东西,那就是。 – m0skit0 2013-02-19 15:02:06

回答

6

最简单的方法是使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; 
} 
0

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

相关问题