我写了一个静态方法用来执行sql语句,如何关闭连接(如下)
public class ExecSql extends Conn {
private static ResultSet rs=null;
private static Statement st=null;
/**
* 执行查询sql语句,返回ResultSet
*/
public static ResultSet ExecQuery(String sql){
try{
st = getConn().createStatement();
rs=st.executeQuery(sql) ;
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
/**
* 执行增加,修改,删除的sql语句,成功则返回true
*/
public static boolean ExecUpdate(String sql){
int i=0;
try{
st = getConn().createStatement();
i=st.executeUpdate(sql) ;
}catch(Exception e){
e.printStackTrace();
}
if(i>0){
return true;
}else{
return false;
}
}
/**
* 关闭结果集
*/
public static void Close(){
try{
if(rs!=null){
rs.close();
rs=null;
}
if(st!=null){
st.close();
st=null;
}
closeConn();
}catch(SQLException e){
e.printStackTrace();
}
}
}
public class ExecSql extends Conn {
private static ResultSet rs=null;
private static Statement st=null;
/**
* 执行查询sql语句,返回ResultSet
*/
public static ResultSet ExecQuery(String sql){
try{
st = getConn().createStatement();
rs=st.executeQuery(sql) ;
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
/**
* 执行增加,修改,删除的sql语句,成功则返回true
*/
public static boolean ExecUpdate(String sql){
int i=0;
try{
st = getConn().createStatement();
i=st.executeUpdate(sql) ;
}catch(Exception e){
e.printStackTrace();
}
if(i>0){
return true;
}else{
return false;
}
}
/**
* 关闭结果集
*/
public static void Close(){
try{
if(rs!=null){
rs.close();
rs=null;
}
if(st!=null){
st.close();
st=null;
}
closeConn();
}catch(SQLException e){
e.printStackTrace();
}
}
}
唉,不过那样ExecQuery也没几条语句了,干脆别写成一个函数,直接写那几条语句得了。
}catch(Exception e)
{
}finally
{ 释放资源}不过这样关闭的话ResultSet又无用了,所以建议不要返回ResultSet,返回它的时候,在用的时候往往会出现诸如连接关闭的问题,不能很好使用finally语句,建议返回集合类,比如Iteratror等
唉,不过那样ExecQuery也没几条语句了,干脆别写成一个函数,直接写那几条语句得了。-----
请晨星说明一下原因好吗?