昨天调试了一下数据迁移,因为数据量比较大,所以决定还是采用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)的原则;
分享到:
相关推荐
标题和描述均聚焦于解释Java Database Connectivity (JDBC)中三个核心接口——`Connection`、`Statement`和`ResultSet`的作用。这三个接口是JDBC API的核心组成部分,它们共同协作,使得Java应用程序能够与各种关系...
Connection代表了与数据库的会话,Statement用于执行SQL语句,而ResultSet则是查询结果的载体。在使用完毕后,都需要关闭它们以释放资源。 在传统的做法中,我们通常会采用try-catch-finally结构来手动关闭这些对象...
把JDBC应用改成JPA程序,需要把原来... 使用DriverManager,Connection,Statement,ResultSet等; 而使用JPA完成数据的操作包括:  得到JDBC驱动程序;  得到持久性提供者相关类库和配置文件;
在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一套标准接口。PrepareStatement是JDBC提供的一种预编译的SQL语句,它可以提高数据库操作的效率和安全性。本资源主要涵盖了使用JDBC ...
**JDBC(用PrepareStatement实现)** Java Database Connectivity (JDBC) 是Java平台中的一个标准API,用于在Java应用程序和各种数据库之间建立桥梁。它允许Java开发者执行SQL语句,进行数据查询、更新和删除等操作。...
JDBC 内容之宋红康版本 JDBC 是 Java 访问数据库的基石,定义了用来访问数据库的标准 Java 类库(java.sql,javax.sql),使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC 为访问不同的数据库提供了...
### JDBC API教程与参考手册(第三版)知识点总结 #### 前言 本书作为《JDBC API教程与参考手册》的第三版,主要针对Java开发者深入理解和掌握JDBC技术而编写。随着Java技术的发展以及数据库操作的需求变化,新版...
在Java编程中,与数据库交互通常涉及使用JDBC(Java Database Connectivity)API。JDBC提供了一种标准的方式来访问各种数据库,包括SQL查询的执行、结果集(ResultSet)的处理等。ResultSet是JDBC中用于存储查询结果...
ResultSet是Java数据库连接(JDBC)中的核心接口,它用于存储和检索数据库查询结果。当你执行SQL查询并从数据库获取数据时,结果会被封装在ResultSet对象中。在本篇文章中,我们将深入探讨ResultSet的主要概念、操作...
Java Database Connectivity (JDBC) 是Java平台中用于与各种数据库进行交互的标准API。它允许Java程序通过编写SQL语句来访问和处理数据库数据。本篇文章将深入探讨JDBC的基础知识,包括连接数据库、执行SQL语句、...
本教程将详细讲解如何在Java程序中使用JDBC与MySQL数据库进行交互,主要包括以下几个关键步骤: 1. **加载JDBC驱动程序**: 在Java程序中,我们需要首先加载MySQL的JDBC驱动,这通常通过`Class.forName()`方法完成...
《JDBC与Java数据库编程》一书旨在深入探讨Java如何通过JDBC(Java Database Connectivity)这一接口与数据库进行高效互动,实现数据的读取、写入、更新等操作。以下是对该主题的详细解析,包括JDBC的概念、体系结构...
使用JDBC时,我们需要导入`java.sql.*`包下的相关类,如`DriverManager`、`Connection`、`Statement`和`ResultSet`。 2. **ResultSet**: `ResultSet`是执行SQL查询后返回的结果集,它是一个接口,用于存储查询结果...
JDBC驱动程序通常包括四个主要部分:Driver接口、Connection对象、Statement对象和ResultSet对象。Driver接口定义了如何与特定数据库通信的规范;Connection对象代表到数据库的物理连接;Statement对象用于执行SQL...
jdbc 实现与线程池 jdbc 是 Java Database Connectivity 的缩写,用于 Java 语言与数据库之间的交互。jdbc 实现可以对数据库进行增删改查操作,并可以与线程池相结合,提高数据库操作的效率和安全性。 一、jdbc ...
Java连接数据库,项目直接导入类使用 *类内有注释参考~ 注: Statement与ResultSet资源需手动释放!!
### JDBC开发过程与原理 #### 一、JDBC概述及原理 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问接口。它使得Java应用程序能够方便地访问各种数据库,...
JDBC不仅是Java平台的标准,还包含了一系列接口和类,如`java.sql.DriverManager`、`java.sql.Connection`、`java.sql.Statement`和`java.sql.ResultSet`等,它们是实现数据库操作的基础。 在压缩包子文件的文件...
标题中的"jdbc与mysql链接包"指的是Java数据库连接(JDBC)驱动程序,它是Java编程语言与MySQL数据库之间通信的桥梁。JDBC是Java标准的一部分,由Java开发工具包(JDK)提供,允许Java应用程序执行SQL语句并处理...
Java Database Connectivity(JDBC)是Java编程语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems(现为Oracle公司)开发并定义,作为Java平台的一部分,允许Java应用程序通过编写Java代码来访问...