每次查询都要
getConnection();
stat_ = conn_.createStatement();
rs_ = stat_.executeQuery(sql);我想把这几句放在一个函数中,比如query(sql),这样每次查询只要一个函数就可以了。但是这样做在返回值的时候遇到了问题。如果函数返回ResultSet,那么rs.close必须要到query(sql)运行完之后。(因为如果在query里close了,那么返回的rs就没有用了。而query完要求我们记得close总是不太适合的。如果返回某个集合(如ArrayList),那么,在query里必须牵涉到表的字段(这样显然不行)。那么怎么办呢?有没有什么办法把ResultSet的结果拷贝到某个集合中,使得即使ResultSet被关闭了,结果也能被查询呢?
getConnection();
stat_ = conn_.createStatement();
rs_ = stat_.executeQuery(sql);我想把这几句放在一个函数中,比如query(sql),这样每次查询只要一个函数就可以了。但是这样做在返回值的时候遇到了问题。如果函数返回ResultSet,那么rs.close必须要到query(sql)运行完之后。(因为如果在query里close了,那么返回的rs就没有用了。而query完要求我们记得close总是不太适合的。如果返回某个集合(如ArrayList),那么,在query里必须牵涉到表的字段(这样显然不行)。那么怎么办呢?有没有什么办法把ResultSet的结果拷贝到某个集合中,使得即使ResultSet被关闭了,结果也能被查询呢?
stat_.executeQuery(procedure);
* Get columns as <code>String[]</code> from <code>ResultSetMetaData[]</code>.
*/
public String[] getColumns(ResultSet rs)
{
String[] columns = null;
try
{
ResultSetMetaData meta = rs.getMetaData();
int columnCount = meta.getColumnCount();
columns = new String[columnCount];
for (int i = 0; i < columnCount; i++)
{
columns[i] = meta.getColumnName(i + 1).toLowerCase();
}
}
catch(SQLException e)
{
log.error("SQLException caught. " + e);
}
return columns;
}然后当然就简单了