这是我写的查询方法
public static List executeQuery(String sql) {
Statement stmt = null;
Connection con = null;
ResultSet rst = null;
List resultList = new LinkedList();
try {
con = DBConnection.createConnection();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rst = stmt.executeQuery(sql);
int n = rst.getMetaData().getColumnCount();//取得总列数
while ( rst.next() ) {
Map map = new HashMap();
for (int i = 1; i <= n; i++) {
map.put(rst.getMetaData().getCatalogName(i), rst.getObject(i));
}
resultList.add(map);
}
} catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
DBConnection.releaseResultSet(rst);// 释放资源
DBConnection.releaseStatement(stmt);
DBConnection.releaseConnection(con);
}
return resultList;
}
|
把ResultSet包装成List返回
在这里要循环n次,把每条记录的每个字段放进Map中,又循环n次再把每个Map对象放到List中,最后返回
返回读取时,又要转成iterator循环n次遍厉元素,再把每个元素转换成Map对象读取key-value对
如果查询的是大量的数据,这样频繁的调用,n次的转来转去,会不会增加开销呢?我下载你的jivejdon3.0,找了一点您操作数据库的部分,也有这样频繁的操作,这个问题,我一直不解
banq老师可否指点一二