日期:2014-05-18  浏览次数:20960 次

关于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;
}
}