【发布时间】:2010-12-28 16:59:17
【问题描述】:
我正在尝试使用 java 数据访问,所以这是我想出的:
告诉我您对此有何看法
(有点像C#中的SqlConnection)
import java.sql.*;
public class SqlConnection {
Connection connection;
public Connection GetConnection() {return connection;}
public void Connect(String cs, String user, String pass)
{
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
connection = DriverManager.getConnection(cs, user, pass);
System.out.println("connected");
} catch (Exception e) {
e.printStackTrace();
}
}
public void Disconnect()
{
if(connection != null){
try {
connection.close();
} catch (SQLException e){
e.printStackTrace();
}
connection = null;
}
}
}
我想我会这样使用它
public class MyDAL {
public Foo[] GetFoos()
{
SqlConnection conn = new SqlConnection();
PreparedStatement comm = null;
ResultSet rs = null;
try {
conn.Connect(cs, user, pass);
comm = conn.GetConnection()
.prepareStatement("SELECT * FROM foos");
rs = comm.executeQuery();
while (rs.next()) {
String s = rs.getString("name");
...
}
} catch (Exception e) {
e.printStackTrace();
}
finally
{
DBUtil.Close(rs);
DBUtil.Close(comm);
conn.Disconnect();
}
}
【问题讨论】:
-
不清楚你的问题是什么。这是否是一个好方法?这是相当主观的,但至少不需要每次需要连接时都调用
Class.forName(一次就足够了),而且它似乎会吃掉异常,这使得使用它很痛苦。代码是否正确?不,它甚至不会编译。你能把事情清理一下并澄清你在问什么吗? -
我可以把 Class.forName 放在哪里,这样就不需要每次都调用eat(我将创建这个 SqlConnection 的许多实例)
标签: java data-access-layer sqlconnection