`
aijun980204
  • 浏览: 99619 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JDBC之Statement与ResultSet

    博客分类:
  • java
阅读更多

昨天调试了一下数据迁移,因为数据量比较大,所以决定还是采用JDBC来完成数据迁移

程序代码 程序代码

    public void initTransplantStatus ()  throws Exception 
    {
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        String sql="";
        int id=20;
        int i=1;
        try{
        conn=DBUtil.getConnection();    
        conn.setAutoCommit(true);
        st=conn.createStatement();
        st2=conn.createStatement();
        st.execute("delete from transplant_status");
        rs=st.executeQuery("select t.id,cl.id from school t join classes cl on t.id=cl.school_id order by t.id");
        while(rs.next())
        {
            id=id+10;
            sql="insert into transplant_status values('"+id+"','"+rs.getString(1)+"','"+rs.getString(2)+"','0',sysdate)";
                                                st.execute(sql);
        }
        conn.commit();
        rs.close();
        st.close();
        }catch(Exception e)
        {
            System.out.println(e.getMessage());
            err=" 初始化迁移状态表时出错!";
            throw new Exception(e.getMessage());
        }
        
    }



上 面的程序是不正确的,直接的结果就是初始化迁移状态表时只有一条记录;原因是ResultSet是依赖于Statement的,Statement在执行 execute后,记录集的结果将丢失,所以记录集循环只执行了一次,解决方法是记录集的获取或execute操作采用另外的Statement;

程序代码 程序代码


    public void initTransplantStatus ()  throws Exception 
    {
        Connection conn=null;
        Statement st=null;
        Statement st2=null;
        ResultSet rs=null;
        String sql="";
        int id=20;
        System.out.println(st.KEEP_CURRENT_RESULT);
        int i=1;
        try{
        conn=DBUtil.getConnection();    
        conn.setAutoCommit(true);
        st=conn.createStatement();
        st2=conn.createStatement();
        st.execute("delete from transplant_status");
        rs=st.executeQuery("select t.id,cl.id from school t join classes cl on t.id=cl.school_id order by t.id");
        while(rs.next())
        {
            id=id+10;            sql="insert into transplant_status values('"+id+"','"+rs.getString(1)+"','"+rs.getString(2)+"','0',sysdate)";
                                        st2 .execute(sql);
        }
        conn.commit();
        rs.close();
        st.close();
        st2.close();
        }catch(Exception e)
        {
            System.out.println(e.getMessage());
            err=" 初始化迁移状态表时出错!";
            throw new Exception(e.getMessage());
        }
        
    }



在 这里, 们用id=id+10实现 ORACLE的sequence序列,因为jdbc连接取自于Hibernate,所以不用显式关闭,而交由Hibernate智能管理;

注 意: 由于这里采用的是hibernate的JDBC,所以与纯JDBC有所区别,具体请见:

http://www.gold98.net/blog/article.asp?id=453

在 适当的时候, 们可以采用批处理,但测 试 过好几次,感觉对比较果不是很明显,这就根据各自需要来定了~

在多表操作时, 们仍应坚持先conn.setAutoCommit(false)后 conn.setAutoCommit(true)的原则;

分享到:
评论

相关推荐

    描述Connection、Statement、ResultSet接口的作用

    标题和描述均聚焦于解释Java Database Connectivity (JDBC)中三个核心接口——`Connection`、`Statement`和`ResultSet`的作用。这三个接口是JDBC API的核心组成部分,它们共同协作,使得Java应用程序能够与各种关系...

    怎样实现关闭connection时自动关闭Statement和ResultSet (下篇)

    Connection代表了与数据库的会话,Statement用于执行SQL语句,而ResultSet则是查询结果的载体。在使用完毕后,都需要关闭它们以释放资源。 在传统的做法中,我们通常会采用try-catch-finally结构来手动关闭这些对象...

    jdbc.rar_jdbc jpa_jpa jdbc _statement

    把JDBC应用改成JPA程序,需要把原来...&#61550 使用DriverManager,Connection,Statement,ResultSet等; 而使用JPA完成数据的操作包括: &#61550 得到JDBC驱动程序; &#61550 得到持久性提供者相关类库和配置文件;

    JDBC PrepareStatement 使用(附各种场景 demo)

    在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一套标准接口。PrepareStatement是JDBC提供的一种预编译的SQL语句,它可以提高数据库操作的效率和安全性。本资源主要涵盖了使用JDBC ...

    JDBC(用PrepareStatement实现)

    **JDBC(用PrepareStatement实现)** Java Database Connectivity (JDBC) 是Java平台中的一个标准API,用于在Java应用程序和各种数据库之间建立桥梁。它允许Java开发者执行SQL语句,进行数据查询、更新和删除等操作。...

    JDBC内容之宋红康版本

    JDBC 内容之宋红康版本 JDBC 是 Java 访问数据库的基石,定义了用来访问数据库的标准 Java 类库(java.sql,javax.sql),使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC 为访问不同的数据库提供了...

    JDBC API教程与参考手册(第三版)前言+目录+第一,二章

    ### JDBC API教程与参考手册(第三版)知识点总结 #### 前言 本书作为《JDBC API教程与参考手册》的第三版,主要针对Java开发者深入理解和掌握JDBC技术而编写。随着Java技术的发展以及数据库操作的需求变化,新版...

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    在Java编程中,与数据库交互通常涉及使用JDBC(Java Database Connectivity)API。JDBC提供了一种标准的方式来访问各种数据库,包括SQL查询的执行、结果集(ResultSet)的处理等。ResultSet是JDBC中用于存储查询结果...

    ResultSet

    ResultSet是Java数据库连接(JDBC)中的核心接口,它用于存储和检索数据库查询结果。当你执行SQL查询并从数据库获取数据时,结果会被封装在ResultSet对象中。在本篇文章中,我们将深入探讨ResultSet的主要概念、操作...

    jdbc知识带注释

    Java Database Connectivity (JDBC) 是Java平台中用于与各种数据库进行交互的标准API。它允许Java程序通过编写SQL语句来访问和处理数据库数据。本篇文章将深入探讨JDBC的基础知识,包括连接数据库、执行SQL语句、...

    MySQL.rar_JDBC程序_statement_完整java开发中JDBC连接数据库代码

    本教程将详细讲解如何在Java程序中使用JDBC与MySQL数据库进行交互,主要包括以下几个关键步骤: 1. **加载JDBC驱动程序**: 在Java程序中,我们需要首先加载MySQL的JDBC驱动,这通常通过`Class.forName()`方法完成...

    JDBC与Java数据库编程.pdf

    《JDBC与Java数据库编程》一书旨在深入探讨Java如何通过JDBC(Java Database Connectivity)这一接口与数据库进行高效互动,实现数据的读取、写入、更新等操作。以下是对该主题的详细解析,包括JDBC的概念、体系结构...

    JdbcSql.rar_java resultset_jtable

    使用JDBC时,我们需要导入`java.sql.*`包下的相关类,如`DriverManager`、`Connection`、`Statement`和`ResultSet`。 2. **ResultSet**: `ResultSet`是执行SQL查询后返回的结果集,它是一个接口,用于存储查询结果...

    sqljdbc_3.0

    JDBC驱动程序通常包括四个主要部分:Driver接口、Connection对象、Statement对象和ResultSet对象。Driver接口定义了如何与特定数据库通信的规范;Connection对象代表到数据库的物理连接;Statement对象用于执行SQL...

    jdbc实现与线程池

    jdbc 实现与线程池 jdbc 是 Java Database Connectivity 的缩写,用于 Java 语言与数据库之间的交互。jdbc 实现可以对数据库进行增删改查操作,并可以与线程池相结合,提高数据库操作的效率和安全性。 一、jdbc ...

    【RubyXun】JDBC之DBHelper类

    Java连接数据库,项目直接导入类使用 *类内有注释参考~ 注: Statement与ResultSet资源需手动释放!!

    JDBC开发过程与原理

    ### JDBC开发过程与原理 #### 一、JDBC概述及原理 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问接口。它使得Java应用程序能够方便地访问各种数据库,...

    sqljdbc_6.0

    JDBC不仅是Java平台的标准,还包含了一系列接口和类,如`java.sql.DriverManager`、`java.sql.Connection`、`java.sql.Statement`和`java.sql.ResultSet`等,它们是实现数据库操作的基础。 在压缩包子文件的文件...

    jdbc与mysql链接包

    标题中的"jdbc与mysql链接包"指的是Java数据库连接(JDBC)驱动程序,它是Java编程语言与MySQL数据库之间通信的桥梁。JDBC是Java标准的一部分,由Java开发工具包(JDK)提供,允许Java应用程序执行SQL语句并处理...

    jdbc jdbc jdbc

    Java Database Connectivity(JDBC)是Java编程语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems(现为Oracle公司)开发并定义,作为Java平台的一部分,允许Java应用程序通过编写Java代码来访问...

Global site tag (gtag.js) - Google Analytics