关于JAVA ResultSet的问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 00:34:06
问一下,我查询数据库之后,返回值是个ResultSet
现在想把这个里面的所有内容都放到一个List<Map>里面该怎么弄?

比如查询结果是:
id,name ,age
0 , A , 18
1 , B , 28

存到ListMap里面是
[{id=0,name=A,age=18},{id=1,name=B,age=28}....]
2楼的方法我试过了,rsmd.getCatalogName(1);(无值)
rs.getObject(1);(抛错)

信息: Detected AnnotationActionValidatorManager, initializing it...
java.sql.SQLException: No data found
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7138)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataDouble(JdbcOdbc.java:3657)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataDouble(JdbcOdbcResultSet.java:5575)
at sun.jdbc.odbc.JdbcOdbcResultSet.getLong(JdbcOdbcResultSet.java:633)
at sun.jdbc.odbc.JdbcOdbcResultSet.getObject(JdbcOdbcResultSet.java:1697)
at dao.Dao.query(Dao.java:36)

我最后用的是:
while(rs.next())
{
int i=0;
Map m=new HashMap();
while(i<columnCount){
m.put(columnNames[i], rs.getString(columnName

try {
ResultSet rs = null;
//封装resultSet数据 ,利用ResultSetMetaData对象可获得表的结构
ResultSetMetaData rsmd=(ResultSetMetaData) rs.getMetaData();
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
while(rs.next()){//循环表
//每行记录放到一个map里!
Map<String,Object> map=new HashMap<String,Object>();//每行记录放到一个
for(int i=0;i<rsmd.getColumnCount();i++)
{
map.put(rsmd.getColumnName(i), rs.getObject(i));
}
list.add(map);
}
} catch (SQLException e) {
e.printStackTrace();
}

3楼写的很好,我就不写了。
我再说一点,就是while(rs.next()){....}
while循环里一定要新new Map否则前面的数据会被后面的冲掉,最后的结果只是你rs最后一条记录的一个map,新new就不会了,有几条数据就有几个map。取的时候迭代取就行了。一个List里有N个map,在List里迭代取Map。
取的时候这样
for(Map m:List){...}
希望对楼主有帮助

List<Map> list=new List<Map>();
while (rs.next()){
int id=rs.getInt(1);
String name=rs.getString(2);
age =rs.getInt(3);
Map map=ne