前言:最近工作上由于需要处理到大数据级别的导入操作,因此接触到了SQLBulkCopy。在摸索SQLBulkCopy的过程中发现了不少新鲜的东西,今天先记录一下CachedRowSetImpl。

      CachedRowSet 对象是一个数据行的容器,可在内存中缓存其各行,这使得进行操作时无需总是连接到数据源。此外,它还是一个 JavaBeansTM 组件,是可滚动、可更新、可序列化的。CachedRowSet 对象通常包含结果集中的行,但它也可以包含任何具有表格式的文件(如电子表格)中的行。参考实现只支持从 ResultSet 对象中获取数据,但是开发人员可以扩展 SyncProvider 实现,以提供对其他表格数据源的访问。

     Java中CachedRowSetlmpl类实现了CachedRowSet接口。CachedRowSetlmpl对象可以保存ResulSet对象中的数据,而且CachedRowSetlmpl对象不依赖Connnection对象,一旦ResulSet对象中的数据保存到CachedRowSetlmpl对象,就可以关闭和数据库的连接。CachedRowSetlmpl继承了ResulSet的所有方法,说以可以和ResulSet的对象一样操作数据。

   (为了加深印象偷偷黏了别人的代码过来)

package com.ifly.myhome.test;
import java.sql.*;
import com.sun.rowset.CachedRowSetImpl;
public class test {
    private static Connection con;
    private static String user = "kh";
    private static String password = "kh";
    private static  String className = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/student";
    public static void main(String[] args) {
        try {
            Class.forName(className);
            con = DriverManager.getConnection(url, user, password);
            String sql="select * from student";
            PreparedStatement pstm=con.prepareStatement(sql);
            pstm.execute();
            ResultSet rs=pstm.getResultSet();
            CachedRowSetImpl rowset=new CachedRowSetImpl();
            rowset.populate(rs);
            rs.close();
            pstm.close();
            con.close();
            while (rowset.next()) {
                System.out.println("id:"+rowset.getString("id"));
                 
            }
             
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐