ResultSetDynaClass与RowSetDynaClass类的应用

本文转载于: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();
  }
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值