在编写SqlHelper类时,我们可以重写executeQuery()方法,使得返回的结果封装到一个ArrayList集合中,这样就可以在返回结果之前关闭资源,而不用等到使用到ResultSet结果集时才关闭资源。
代码:
public ArrayList executeQuery(String sql,String []parameters)
{
ct=DBUtil.getConnection();
ArrayList al=new ArrayList();
try {
ps=ct.prepareStatement(sql);
if(parameters!=null)
{
for(int i=0;i {
ps.setString(i+1, parameters[i]);
}
}
rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int column=rsmd.getColumnCount();
while(rs.next()){
Object[] bj=new Object[column];
for(int i=1;i<=column;i++)
{
obj[i-1]=rs.getObject(i);
}
al.add(obj);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally{
close(ct,ps,rs);
}
return al;
}
{
ct=DBUtil.getConnection();
ArrayList al=new ArrayList();
try {
ps=ct.prepareStatement(sql);
if(parameters!=null)
{
for(int i=0;i {
ps.setString(i+1, parameters[i]);
}
}
rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int column=rsmd.getColumnCount();
while(rs.next()){
Object[] bj=new Object[column];
for(int i=1;i<=column;i++)
{
obj[i-1]=rs.getObject(i);
}
al.add(obj);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally{
close(ct,ps,rs);
}
return al;
}
改函数中使用到的close()函数是自定义的一个关闭资源的函数。在改方法中用到了一个ResultSet中的getMetaData()方法。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26480336/viewspace-719768/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26480336/viewspace-719768/