`
aijun980204
  • 浏览: 96298 次
  • 性别: 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)的原则;

分享到:
评论

相关推荐

    jdbc.rar_jdbc jpa_jpa jdbc _statement

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

    Spring Data JDBC与JDBC的区别

     java.sql和javax.sql两个包中的类与接口(天龙八部):  DataSource:数据源  DriverManager:驱动管理  Driver:JDBC驱动  Connection:数据库连接  Statement:语句,执行SQL  PrepareStatement:预编译语句,...

    【RubyXun】JDBC之DBHelper类

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

    JDBC详解HTML-JDBC.pp

    JDBC-ODBC桥驱动实现与数据库的连接。 1>.JDBC驱动程序类型: <1>.JDBC-ODBC桥加ODBC驱动程序:需要ODBC驱动,适合于企业网或三层结构应用程序 <2>.本地API:需要驱动程序的二进制代码支持 <3>.JDBC网络纯java...

    Java-JDBC【源码】JDBC概述、获取连接、SQL注入问题与解决、查询解析

    Java-JDBC【之】JDBC概述、获取连接、SQL注入问题与解决、查询解析 1.JDBC概述 2.操作流程 1.初始化项目,导入`驱动jar包` 2.加载驱动类 3.创建数据库连接对象`Connection` 4.创建`Statement` (此处存在SQL注入问题)...

    JDBC学习资料

    4、掌握JDBC中几个重要类的使用:Connection、Statement、ResultSet;5、理解JDBC操作数据库的一般步骤;6、掌握SQLException的异常处理;7、理解数据库事务、JDBC对事务的支持、以及JDBC事务的原理和如何使用JDBC事务...

    JDBCFacade模式的运用

    JDBC访问数据库需要用到一些相关的类和接口,主要有数据库的jdbc驱动程序,DriverManager,Connection, Statement, ResultSet,SQLException等。为了将这些复杂的细节与数据库应用程序的设计者隔离开,请设计一个...

    Java数据库接口JDBC介绍

    目录 前言 1 参考资料 1 第1章 JDBC概述 2 1.1 JDBC用途 2 第2章 主要调用对象接口介绍 2 2.1 connection对象 2 ...2.4 ResultSet对象 9 2.4.1 行和光标 9 2.4.2 列 10 第3章 常用数据库JDBC写法 10

    自己封装的JDBC工具类源码

    其中,与数据库的连接声明成了成员变量,建立连接后可执行各种操作,每个类中的statement、resultset等操作在方法内均关闭,但数据库连接没有关闭,需要在操作完成后调用其中的 closeConnection方法关闭;...

    greenplum.jar 官方驱动 JDBC

    import java.sql.ResultSet; import java.sql.Statement; public class Greenplum { public static void main(String args[]) throws Exception{ Class.forName("com.pivotal.jdbc.GreenplumDriver"); ...

    GBase-8s数据库JDBC Driver程序员指南-D.docx

    GBase 8s JDBC 驱动程序提供了多种类来实现数据库连接和访问,包括 Driver、Connection、Statement、ResultSet 等。 2.3.2 GBase 8s JDBC 驱动程序中的文件 GBase 8s JDBC 驱动程序提供了多种文件来实现数据库连接...

    5 JDBC的使用

    编写Java代码,熟悉并掌握JDBC的使用,包括Connection、Statement、ResultSet等对象的使用。了解JDBC访问数据库的方法。

    excel的jdbc驱动

    Statement stm = con.createStatement(); String sql = "select * from sheet"; for(int i=0;i;i++){ ResultSet rs = stm.executeQuery(sql); while (rs.next()){ System.out.println(rs.getString("NAME")); ...

    JDBC连接所有数据库步骤

    JDBC连接所有数据库步骤 1 将数据库的JDBC驱动加载到classpath中,在基于JAVAEE的WEB应用实际开发过程中,通常要把目标...7 依次将ResultSet、Statement、PreparedStatement、Connection对象关闭,释放所占用的资源。

    JDBC笔记 JDBC笔记

    java.sql.Connection 与特定数据库的连接(会话)。能够通过getMetaData方法获得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。代表了数据库。 java.sql.Driver 每个驱动程序类必需实现的...

    JDBC元数据操作--DatabaseMetaData接口Demo

    在JDBC技术规范中,提供了Connection,Statement,ResultSet这三个开发过程中经常用到的接口。针对与每个接口,JDBC规范提供了相应的接口描述对象,也就是xxxMetaData系列描述对象。DatabaseMetaData和...

    struts JDBC 实现简单的增删改查、登录注册

    /** * @param args * 查询功能 */ ... Statement st = null; ResultSet rs = null; String quersql = null; ArrayList<UserBean> listUserBean = new ArrayList(); try {

    Access_JDBC30 无使用次数限制 - 破解

    ResultSet rs= statement.executeQuery("select * from test"); while(rs.next()){ System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)+"\t"+rs.getString...

    JDBC(powernode 文档)源代码

    2.2.4 创建Statement并发送命令 2.2.5 处理ResultSet结果 2.2.6 关闭数据库资源 3.准备工作 3.1 创建数据库并创建student表 3.2 创建项目 3.3 创建lib目录并引入MYSQL驱动包 3.4 把lib包引入项目环境 4.使用...

Global site tag (gtag.js) - Google Analytics