如何将ResultSet返回成ARRAYLIST哦 如何让查询出来的数据集返回成ARRAYLIST哦各位,帮帮我 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ArrayList smallList=new ArrayList();ArrayList biggerList=new ArrayList();while(rs.next){smallList.clear(); smallList.add(rs.getString(""))......Object[] obj=new Object[smallList.size()];smallList.array(obj);biggerList.add(obj);}return biggerList; public static Collection getXXXX() throws ServiceException { Statement sqlStrStmt = null; ResultSet rs = null; Connection con = xxx.getConnection(); Collection lst = new ArrayList(); try { String strSql = "select * from table"; sqlStrStmt = con.createStatement(); rs = sqlStrStmt.executeQuery(strSql); while (rs.next()) { lst.add(new Integer(rs.getInt("XXX"))); } rs.getStatement().close(); } catch (SQLException e) { ... } finally { if (con != null) { try { con.close(); } catch (SQLException e) { ... } } } return lst; } to 樓主: 這樣的描述ok嗎? 簡而言之,就是把resultset中的值提取出來,放到數組中,然後再把數組放到arrayList中.. 你可以定义一个bean,bean的属性就是你resultset中的各个字段,然后循环rs,读取数据,每一行数据生成一个bean对象,放入ArrayList不就行了。当然上面的工作已经有人做了,就是apache下的commons/beanutils子项目中有一个RowSetDynaClass类具体的使用方法: Connection conn = ...; // Acquire connection from pool Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT id,name from users"); RowSetDynaClass rsdc = new RowSetDynaClass(rs); rs.close(); stmt.close(); ...; // Return connection to pool List rows = rsdc.getRows(); ...; // Process the rows as desiredfor(java.util.Iterator i=rows.iterator();i.hasNext();){org.apache.commons.beanutils.DynaBean bean=(org.apache.commons.beanutils.DynaBean)i.next();System.out.println("id: "+bean.get("id")+", name: "+bean.get("name"));} BeanUtils包可以在这里down:http://archive.apache.org/dist/jakarta/commons/beanutils/binaries/你可以选择不同的版本,建议选择1.6以上http://archive.apache.org/dist/jakarta/commons/beanutils/binaries/commons-beanutils-1.6.1.zip public final Collection<SpInfoForm> listAllCodeTest() { ArrayList<SpInfoForm> list = new ArrayList(); String sql = "select spName,spID from spinfo"; try { Connection conn = dbmAuth.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); System.out.println(sql); while (rs.next()) { SpInfoForm sf = new SpInfoForm(); sf.setSpName(rs.getString(1)); sf.setSpID(rs.getString(2)); System.out.println(rs.getString(1)); list.add(sf); } dbmAuth.closeConn(conn, stmt, rs); } catch (SQLException e) { e.printStackTrace(); } return list; } 通用方法接收一个sql语句 返回一个装有LinkedHashMap的ArrayList集合 其中LinkedHashMap的KEY为数据库字段名 VALUE为该字段的值public static ArrayList delRes(String sql) { ArrayList<LinkedHashMap> list = new ArrayList<LinkedHashMap>(); Connection conn = null; PreparedStatement stmt = null; ResultSetMetaData metaData=null; try { conn = ConDB.getCon(); stmt = (PreparedStatement) conn.prepareStatement(sql); ResultSet result = stmt.executeQuery(); metaData=result.getMetaData(); while (result.next()) {LinkedHashMap v = new LinkedHashMap();for (int i = 1; i <= metaData.getColumnCount(); i++) v.put(metaData.getColumnLabel(i),result.getObject(i));list.add(v); } } catch (SQLException e) { e.printStackTrace(); } finally { try {if (stmt != null) { stmt.close();}if (conn != null) { conn.close();} } catch (SQLException e) {e.printStackTrace(); } } return list;} 或者这样假设有一个NewsAddBean具有news_id和news_title以及他们相应的set和get方法传入一个sql语句取出数据库的字段news_id和news_title的值 调用set方法存入NewsAddBeanpublic ArrayList<NewsAddBean> listNews(String sql){ try{ con = ConDB.getCon(); Statement stmt2 = null; ResultSet result2 = null; stmt = con.createStatement(); result = stmt.executeQuery(sql); while(result.next()){ NewsAddBean NOset=new NewsAddBean(); NOset.setNews_id(result.getString("news_id")); NOset.setNews_title(Utils.strLong(result.getString("news_title")); list.add(NOset); } }catch(Exception e){ e.printStackTrace(); }finally { try { if (result != null ) { result.close(); } if (stmt != null) { stmt.close(); } if (con !=null ) { con.close(); } } catch (SQLException ex) { System.out.println(ex.getMessage()); } } return list;} 上面2种方法不同的是 第一个方法是 返回一个LinkedHashMap的ArrayList集合 比较适于用JSF框架之类的页面迭代方法显示 而且受数据库的影响 第二个方法是 返回一个装有固定Bean的ArrayList集合 比较适合普通MVC在页面生成Bean对象进行迭代方法显示 但是比较有局限性 只能针对某个Bean进行操作 而且还要自己手动set 回楼主我所做的项目和我所看到的项目 如果是用java进行数据库操作的话 基本都是这样做 都是返回结果集 然后第一种是通过JSF自带的标签进行迭代输出 第二种是自己在页面上生成bean对象进行迭代输出 我上面对2个方法分别应用的方面做出了解释 不过第一个方法是不受表里字段的限制的 少打个不字 呵呵 集合的速度挺快的 尤其在数据库结果集的应用方面 楼主不用担心 要用到2个ArrayList。也就是说返回的ArrayList中的每一项也是一个ArrayList. public static Collection getXXXX()throws ServiceException {Statement sqlStrStmt = null;ResultSet rs = null;Connection con = xxx.getConnection();Collection lst = new ArrayList();try {String strSql = "select * from table";sqlStrStmt = con.createStatement();rs = sqlStrStmt.executeQuery(strSql);while (rs.next()) {lst.add(new Integer(rs.getInt("XXX")));}rs.getStatement().close();} catch (SQLException e) {...} finally {if (con != null) {try {con.close();} catch (SQLException e) {...}}}return lst;} Jpanel 画图多出了个按钮 SWT的table中我用TableEditor在单元格中设置了一个下拉框Combo,但如何获取呢? 新手问题 报这错误什么原因,走过路过来瞧瞧!!!! 有谁知道windows的环境变量是保存在哪里的? 小问题~String a="aa"; String a=new String("aa"); JDBC连MYSQL事务处理 关于数据存储的问题 jna调用dll 求大神来科普一下lock与synchronized的区别 关于SQL动态参数的问题 方法问题,各位大虾帮帮小妹
ArrayList biggerList=new ArrayList();
while(rs.next){
smallList.clear();
smallList.add(rs.getString(""))
...
...
Object[] obj=new Object[smallList.size()];
smallList.array(obj);
biggerList.add(obj);}
return biggerList;
throws ServiceException {
Statement sqlStrStmt = null;
ResultSet rs = null;
Connection con = xxx.getConnection();
Collection lst = new ArrayList();
try {
String strSql = "select * from table";
sqlStrStmt = con.createStatement();
rs = sqlStrStmt.executeQuery(strSql);
while (rs.next()) {
lst.add(new Integer(rs.getInt("XXX")));
}
rs.getStatement().close();
} catch (SQLException e) {
...
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
...
}
}
}
return lst;
}
這樣的描述ok嗎?
簡而言之,就是把resultset中的值提取出來,放到數組中,然後再把數組放到arrayList中..
Connection conn = ...; // Acquire connection from pool
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id,name from users");
RowSetDynaClass rsdc = new RowSetDynaClass(rs);
rs.close();
stmt.close();
...; // Return connection to pool
List rows = rsdc.getRows();
...; // Process the rows as desired
for(java.util.Iterator i=rows.iterator();i.hasNext();)
{
org.apache.commons.beanutils.DynaBean bean=(org.apache.commons.beanutils.DynaBean)i.next();
System.out.println("id: "+bean.get("id")+", name: "+bean.get("name"));
}
http://archive.apache.org/dist/jakarta/commons/beanutils/binaries/你可以选择不同的版本,建议选择1.6以上http://archive.apache.org/dist/jakarta/commons/beanutils/binaries/commons-beanutils-1.6.1.zip
public final Collection<SpInfoForm> listAllCodeTest() {
ArrayList<SpInfoForm> list = new ArrayList();
String sql = "select spName,spID from spinfo";
try {
Connection conn = dbmAuth.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
System.out.println(sql);
while (rs.next()) {
SpInfoForm sf = new SpInfoForm();
sf.setSpName(rs.getString(1));
sf.setSpID(rs.getString(2)); System.out.println(rs.getString(1));
list.add(sf);
}
dbmAuth.closeConn(conn, stmt, rs);
} catch (SQLException e) {
e.printStackTrace();
} return list;
}
ArrayList<LinkedHashMap> list = new ArrayList<LinkedHashMap>();
Connection conn = null;
PreparedStatement stmt = null;
ResultSetMetaData metaData=null;
try {
conn = ConDB.getCon();
stmt = (PreparedStatement) conn.prepareStatement(sql);
ResultSet result = stmt.executeQuery();
metaData=result.getMetaData();
while (result.next()) {
LinkedHashMap v = new LinkedHashMap();
for (int i = 1; i <= metaData.getColumnCount(); i++)
v.put(metaData.getColumnLabel(i),result.getObject(i));
list.add(v);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
传入一个sql语句取出数据库的字段news_id和news_title的值 调用set方法存入NewsAddBean
public ArrayList<NewsAddBean> listNews(String sql){
try{
con = ConDB.getCon();
Statement stmt2 = null;
ResultSet result2 = null;
stmt = con.createStatement();
result = stmt.executeQuery(sql);
while(result.next()){
NewsAddBean NOset=new NewsAddBean();
NOset.setNews_id(result.getString("news_id"));
NOset.setNews_title(Utils.strLong(result.getString("news_title"));
list.add(NOset);
}
}catch(Exception e){
e.printStackTrace();
}finally {
try {
if (result != null ) {
result.close();
}
if (stmt != null) {
stmt.close();
}
if (con !=null ) {
con.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
return list;
}
第一个方法是 返回一个LinkedHashMap的ArrayList集合 比较适于用JSF框架之类的页面迭代方法显示 而且受数据库的影响
第二个方法是 返回一个装有固定Bean的ArrayList集合 比较适合普通MVC在页面生成Bean对象进行迭代方法显示 但是比较有局限性 只能针对某个Bean进行操作 而且还要自己手动set
也就是说返回的ArrayList中的每一项也是一个ArrayList.
throws ServiceException {
Statement sqlStrStmt = null;
ResultSet rs = null;
Connection con = xxx.getConnection();
Collection lst = new ArrayList();
try {
String strSql = "select * from table";
sqlStrStmt = con.createStatement();
rs = sqlStrStmt.executeQuery(strSql);
while (rs.next()) {
lst.add(new Integer(rs.getInt("XXX")));
}
rs.getStatement().close();
} catch (SQLException e) {
...
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
...
}
}
}
return lst;
}