还是数据库连接后,如何类间传递Statement对象的问题,跪求代码实现,谢谢。
import java.sql.*; import javax.swing.JOptionPane;public class ConnectDB{ public void connectData() { Connection con = null; Statement st = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=E:\\EclipseWS\\AddressList\\source\\DB.mdb"; con = DriverManager.getConnection(url,"amin","admin"); st = con.createStatement(); //如何把这个获得的st传给同一工程下的另外一个 //类login,ResultSet rs = st.excuteQuery(""); //来获取数据库的用户名。 }catch(Exception ex) { JOptionPane.showMessageDialog(null , "数据库连接错误"+"SQL exception:" + ex.getMessage() , "Error" , JOptionPane.ERROR_MESSAGE); } } }
import java.sql.*; import javax.swing.JOptionPane;public class ConnectDB{ private Connection con=null; private Statement st=null; public void connectData() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=E:\\EclipseWS\\AddressList\\source\\DB.mdb"; con = DriverManager.getConnection(url,"amin","admin"); st = con.createStatement(); //如何把这个获得的st传给同一工程下的另外一个 //类login,ResultSet rs = st.excuteQuery(""); //来获取数据库的用户名。 }catch(Exception ex) { JOptionPane.showMessageDialog(null , "数据库连接错误"+"SQL exception:" + ex.getMessage() , "Error" , JOptionPane.ERROR_MESSAGE); } } public statement getSt(){ return st; }}[code=Java]
[解决办法]
可以用个简单的工厂模式
public class ConnectDB{ private Connection con=null; private Statement st=null; private String url; static { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=E:\\EclipseWS\\AddressList\\source\\DB.mdb"; } public static Connection createConnection() { try { con = DriverManager.getConnection(url,"amin","admin"); return con }catch(Exception ex) { JOptionPane.showMessageDialog(null , "数据库连接错误"+"SQL exception:" + ex.getMessage() , "Error" , JOptionPane.ERROR_MESSAGE); } } }
[解决办法]
你这样设计很危险的,不要把 Connection、Statement 和 ResultSet 传来传去。
[解决办法]
为了避免不必要的麻烦,不要将 Connection, Statement, ResultSet 作为成员变量,也不要在方法间进行传递。
数据库操作最小的粒度是 POJO 对象,而不是数据库连接的这些对象。
采用的方法签名可以是这样的:
/** * 根据用户名和密码获得用户对象 * * @param username 用户名 * @param password 密码 * @return 获得匹配用户名和密码的 User 对象,如果没有可匹配的 User 则返回 null */public User queryUser(String username, String password);
[解决办法]