首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

还是数据库连接后,怎么类间传递Statement对象的有关问题,跪求代码实现,多谢

2011-12-13 
还是数据库连接后,如何类间传递Statement对象的问题,跪求代码实现,谢谢。Java codeimport java.sql.* impo

还是数据库连接后,如何类间传递Statement对象的问题,跪求代码实现,谢谢。

Java code
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);            }         } }

如何实现这个功能,不知道哪位大哥能提供这个代码。

[解决办法]
不明白想用这statement来做什么,但是这样应该能够实现
public class ConnectDB{ 
public static Statement st = null;

static{ 
Connection con = 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();
}catch(Exception ex)

JOptionPane.showMessageDialog(null , "数据库连接错误"+"SQL exception:" + ex.getMessage() , "Error" , JOptionPane.ERROR_MESSAGE);


}
不知道这么实现是否能满足要求。。。。。。。。。。
[解决办法]
为什么不用类的封装来实现呢?
Java code
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]
[解决办法]
可以用个简单的工厂模式
Java code
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 对象,而不是数据库连接的这些对象。

采用的方法签名可以是这样的:

Java code
/** * 根据用户名和密码获得用户对象 * * @param username  用户名 * @param password  密码 * @return  获得匹配用户名和密码的 User 对象,如果没有可匹配的 User 则返回 null */public User queryUser(String username, String password);
[解决办法]
探讨
为了避免不必要的麻烦,不要将 Connection, Statement, ResultSet 作为成员变量,也不要在方法间进行传递。
数据库操作最小的粒度是 POJO 对象,而不是数据库连接的这些对象。

采用的方法签名可以是这样的:


Java code/**
* 根据用户名和密码获得用户对象
*
* @param username 用户名
* @param password 密码
* @return 获得匹配用户名和密码的 User 对象,如果没有可匹配的 User 则返回 null
*/
pu…

[解决办法]
浪费资源 不能保持事务的原子性

热点排行