我正在实现一个使用 JDBC 驱动程序的代码。
下面是我制作的代码。
public class MysqlUtils {
public Connection conn;
public ResultSet rs;
public PreparedStatement stmt;
public MysqlUtils(String address, String id, String passwd) {
try {
conn = DriverManager.getConnection(address, id, passwd);
stmt = null;
rs = null;
} catch (SQLException e) {
// error management
}
}
public void getSomeData(long id) {
try {
stmt = conn.prepareStatement("SELECT * FROM some_table");
rs = stmt.executeQuery();
rs.next();
System.out.println(rs.getString("some_column");
} catch (SQLException e) {
// error management
}
}
}
我已将 Connection conn、ResultSet rs、PreparedStatement stmt 声明为成员变量,因为我认为这可能有助于提高性能。
我有一些问题。
如果我连续调用 getSomeData() ,每次都会为 stmt 和 rs 分配新对象吗?
不管上面问题的答案如何,如果我在多线程环境(使用 MysqlUtils 类的多个线程)中运行这段代码,会不会因为我没有在 getSomeData() 中声明 ResultSet rs 而造成混淆?
将 Connection conn、ResultSet rs、PreparedStatement stmt 声明为成员变量是一个糟糕的选择吗?换句话说,我的 JDBC 实现是可行的吗?
谢谢您的帮助。