• ResultSet,RowSet,OracleCachedRowSet和RowSetMetaData区别及联系


          在java主要涉及到数据开发的过程中,我们会和数据库打交道很多,其中使用了数据集比如ResultSet和RowSet,经常使用两种,还有其它的一些,那么这两种的主要区别是什么呢?我们先来看它们引入的方式,ResultSet:import java.sql.ResultSet;  RowSet: import javax.sql.RowSet; 典型的区别是引入的路径不一样:

    java和javax都是Java的API(Application Programming Interface)包,java是核心包,javax的x是extension的意思,也就是扩展包。java类库是java发布之初就确定了的基础库,而javax类库则是在上面增加的一层东西,就是为了保持版本兼容要保存原来的,但有些东西有了更好的解决方案,所以,就加上些。

    所以我们就可以知道ResultSet要比RowSet出现的早,就是java发布初期就存在的,我们查询API也可以看到RowSet是从version 1.4才有的,public interface RowSet extends ResultSet

    RowSet 接口扩展了标准 java.sql.ResultSet 接口。RowSetMetaData 接口扩展了 java.sql.ResultSetMetaData 接口.

    那么我们在使用的时候尽量使用扩展的RowSet就可以满足要求:

        Connection dbconn = null;        
            
        PreparedStatement psQuery = null;
    
        RowSet rsQuery = null;
    
        String sQuery = "select a,b from table";
    
        try{
        DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
        dbconn =
            DriverManager.getConnection(
                        "xxxx",
                        "username",
                        "ps");
        dbconn.setAutoCommit(false);
        
        psQuery=dbconn.prepareStatement(sQuery);
          
        rsQuery = psQuery.executeQuery();
    
        while (rsQuery.next())   {
            String name = rsQuery.getString("a");
            logger.info("user name is: "+name);
         }
        
       } catch (SQLException e){
          e.printStackTrace();
       }

    CachedRowSet 对象是一个数据行的容器,可在内存中缓存其各行,这使得进行操作时无需总是连接到数据源,CachedRowSet 对象是一个非连接 rowset,这意味着它只会短暂地连接其数据源。在需要连接后及时断开数据源的情境下可以使用缓存RowSet,也就是CachedRowSet,

    那么OracleCachedRowSet就是Oracle对于CachedRowSet的扩展实现。

    RowSetMetaData那么就是扩展了ResultSetMetaData, 顾名思义就是元数据,就是基础信息,比如列的数量,类型等,常用的比如需要得到列数目getColumnCount():

    所以简单总结就是RowSet是对ResultSet的扩展,MetaData是元数据,CachedRowSet则是可以缓存不需要实时连接数据源的。
  • 相关阅读:
    linux查看端口号监听状态
    linux / centos 安装SQL Server 2017 设置默认语言与排序规则Chinese_PRC_CI_AS
    centos 生产环境部署 asp.net core
    shell参数处理模板
    搜狗语料库数据整编
    Call From master/192.168.128.135 to master:8485 failed on connection exception: java.net.ConnectException: Connection refused
    spark-shell启动报错:Yarn application has already ended! It might have been killed or unable to launch application master
    webmagic爬取博客园所有文章
    jdbc链接hive报错:java.lang.ClassNotFoundException: org.apache.thrift.transport.TTransport
    NotePad++ 正则表达式替换 高级用法 [转]
  • 原文地址:https://www.cnblogs.com/practice-h/p/9008361.html
Copyright © 2020-2023  润新知