小弟初学JDBC,现在有个问题向各位请教:
大致代码如下;class A{
public static void main() {
//调用B.query方法
ResultSet rs = new B().query(sql);
rs.close();
}
}class B{
public ResultSet query(String sql) {
//建立连接conn及stmt
ResultSet rs = stmt.executeQuery(sql)
}
}按上述情况,调用完类B中query方法后,conn和stmt何时关闭,这样是否会存在数据库连接未关闭的情况,有没有好的解决办法。
大致代码如下;class A{
public static void main() {
//调用B.query方法
ResultSet rs = new B().query(sql);
rs.close();
}
}class B{
public ResultSet query(String sql) {
//建立连接conn及stmt
ResultSet rs = stmt.executeQuery(sql)
}
}按上述情况,调用完类B中query方法后,conn和stmt何时关闭,这样是否会存在数据库连接未关闭的情况,有没有好的解决办法。
if(conn == null)
{conn.close();}
其他两个一样的.不过这个都是放到finally中的.
conn.close();
conn = null;
}
class B{
private Connection con;
private Statement stmt;
private ResultSet rs;public ResultSet query(String sql) {
//建立连接conn及stmt
rs = stmt.executeQuery(sql);
}
public synchronized void close() {
try {
if (rs != null) {
rs.close();
rs = null;
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
try {
if (con != null) {
con.close();
con = null;
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
//类a中的主方法这样改
class A{
public static void main() {
//……先建立连接
//调用B.query方法
B example=new B();
//……sql语句的定义
ResultSet rs = example.query(sql);
example.close();
}
}