关于rs转成list的问题,菜鸟级,请教高手!
public class ListView
{
DB dbx=new DB();
public static List resultSetToList(String sql) throws
SQLException {
DB dbx=new DB();
ResultSet rs=dbx.executeQuery(sql);
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
List list = new ArrayList();
Map rowData;
while (rs.next())
{
rowData = new HashMap(columnCount);
for (int i=1; i <=columnCount; i++)
{
//rowData.put(md.getColumnName(i),ss);
System.out.println( "----------------- ");
System.out.println(md.getColumnName(i));
System.out.println(rs.getObject(i));
}
list.add(rowData);
}
return list;
}
}
现在md.getColumnName()显示出来的列标题和数据库自段相符合,但是rs.getObject(i)显示出来的数据却和列标题不符合,和数据库里的值也不符合,为什么会出先这样的原因的呀?请教高手
例如: md.getColumnName() = “custid”数据库里自段
rs.getObject(i) = “xxxxxx”,但现在显示的却是rs.getObject(i)=0
------解决方案--------------------rs.getObject(md.getColumnName(i));
试试
------解决方案--------------------可能是因为你在利用rs取值的时候,没有设定数据类型,比如说某列的值是double类型的,就应该这么取:
rs.getDouble( "字段名 ");
而不是利用
rs.getObject(i);
来获取值,当然也可以利用rs.getDouble(i)来获取,你可以试试
------解决方案--------------------获取值的时候还是使用rs.getString()...方法,不要使用getobject
------解决方案--------------------一般做法是将ResultSet封装成一个个javabean然后将javabean放入list集合中返回。
类似于:
public class test {
DB dbx = new DB();
public static List resultSetToList(String sql) throws SQLException {
DB dbx = new DB();
ResultSet rs = dbx.executeQuery(sql);
ResultSetMetaData md = rs.getMetaData();
for (int i = 0; i < md.getColumnCount(); i++) {
System.out.println(md.getColumnName(i));
System.out.println( "----------------- ");
}
List list = new ArrayList();
while (rs.next()) {
UserBean bean = new UserBean();
int userid = rs.getInt( "userid ");
String username = rs.getString( "username ");
bean.setUserid(userid + " ");
bean.setUsername(username);
list.add(bean);
System.out.println(userid + " "+username);
}
return list;
}
}