本文转载于:http://jhlishero.iteye.com/blog/754135
1、ResultSetDynaClass 是基于Iterator的,一次只返回一条记录,在ResultSetDynaClass没有操作完以前,ResultSet对象不能关闭。
2、RowSetDynaClass是基于List的,一次返回所有的结果。
以下是实例代码:
package demo04;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.ResultSetDynaClass;
import org.apache.commons.beanutils.RowSetDynaClass;
/**
* ResultSetDynaClass类可以包装java.sql.ResultSet类:一次返回一个结果
* RowSetDnyaClass类包装java.sql.ResultSet:一次性返回所有结果
*/
public class ResultSetDynaClassTest {
public static void main(String args[]) throws Exception {
readDBResult();
}
public static void readDBResult() throws Exception {
Connection conn = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/study?useUnicode=true&characterEncoding=GBK";
String username="root";
String password = "root";
conn = DriverManager.getConnection(url,username, password);
pstmt = conn.prepareStatement("select id,username, password from user");
rs = pstmt.executeQuery();
//使用java.sql.ResultSet输出
while(rs.next()) {
System.out.println("username=" + rs.getString("username"));
}
//使用Common BeanUtils中的ResultSetDynaClass类包装
System.out.println("-----------分割线---------------------");
rs.beforeFirst();//这里必须使用beforeFirst
ResultSetDynaClass rsdc = new ResultSetDynaClass(rs);
Iterator<DynaBean> rows = rsdc.iterator();
while(rows.hasNext()) {
DynaBean row = rows.next();
System.out.println("id=" + row.get("id") + ",username="
+ row.get("username") + ",password="
+ row.get("password"));
}
//使用RowSetDnyaClass类
System.out.println("-----------分割线---------------------");
rs.beforeFirst();//这里必须使用beforeFirst
RowSetDynaClass rc = new RowSetDynaClass(rs);
List<DynaBean> resultList = rc.getRows();
for(DynaBean db : resultList) {
System.out.print(db.get("id") + "\t");
System.out.print(db.get("username") + "\t");
System.out.println(db.get("password"));
}
} finally {
if(pstmt!=null)
pstmt.close();
if(rs!=null)
rs.close();
if(conn!=null)
conn.clearWarnings();
}
}
}