使用时有一个重要前提:你不能使用oracle的classes12.jar,需要把oracle的jdbc驱动替换成ojdbc14.jar,否则savepoint()功能不能使用(出现“abstract方法尚未被oracle的jdbc驱动实现的错误”)。
JDBC 3.0的savepoints可以让你细化地控制一个数据库事务。
JDBC 3.0的一个最酷的新功能就是它可以在一个事务中创建并运用savepoints。
Savepoints——长期以来是SQL的一个 功能——通过标记事务可以回滚到的中间步骤,就可以让你细化地控制一个JDBC数据库事务。那么你为什么要这么做呢?我们来看一个典型的订票问题。Ivana女士想从北京到太原度假,然后再回来。她订的票是从北京到太原,然后再返回。下面就是整个事务的步骤:
1. 开始事务
2. 订从北京到太原的航班
3. 订从太原到北京的返航
4. 提交事务
5. 如果出现异常或错误,回滚事务
但在这个例子中,如果在第五步,票售完了,整个行程就得取消,回滚使数据库回复到第一步开始执行前的状态。 然而,不管怎样Ivana可能还是需要一些票的,因为她可以在返回时坐另外的航线。你可以用JDBC 3.0的savepoints来帮助Ivana女 士,整个事务如下:
1. 开始事务
2. 订从北京到太原的航班
3. 建立savepoint
4. 订从太原到北京的返航
5. 当出现异常或错误时,如果设了savepoint,回滚事务到步骤4中的savepoint
6. 提交事务
简单地说,一个savepoint就是代表一个特殊时间点上的一个事务,并对事务中SQL语句的一个子集完成的工作提供细化的控制。运用 savepoint,你就不会回滚到一个事务的起始状态,而是回滚到savepoint。你可以在一个单一的事务中运用多个savepoints,通过明 确调用Connection.releaseSavepoint (savepoint) 方法,或者通过提交事务、回滚整个事务来释放 (release)savepoints。一旦一个savepoint被释放了,试图回滚到它就会抛出一个SQLException异常。
要在你的Java代码中运用savepoints,你必须运用JDBC 3.0,这就是说:
· 你必须运用JDK 1.4,因为它是一个核心API。
· 你的JDBC驱动程序必须是JDBC 3.0兼容的。你可以在http://industry.java.sun.com/products/jdbc/drivers的Sun JDBC驱动程序数据库中找到JDBC驱动程序列表。
public class JdbcTestSavePoint {
public static void executeJdbc(boolean onlyHuiPiao) throws SQLException {
Connection conn = null;
Statement ptmt = null;
Savepoint txpoint = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@10.1.252.80:1521:newngboss", "sr", "sr");
conn.setAutoCommit(false);
try {
ptmt = conn.createStatement();
ptmt.execute("insert into input_component_template(id,name) values(-110,'121000')");// 回的票,必须有
txpoint = conn.setSavepoint();
ptmt.execute("insert into input_component_template(id,name) values(-111,'121111')");// 返程票,不必须
if (onlyHuiPiao && txpoint != null) {// 只要回的票
conn.rollback(txpoint);
}
conn.commit();
} catch (Exception e) {//异常处理
e.printStackTrace();
if (txpoint != null) {
conn.rollback(txpoint);
conn.commit();
} else {
conn.rollback();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ptmt != null)
ptmt.close();
if (conn != null)
conn.close();
}
}
public static void main(String[] args) {
try {
executeJdbc(true);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Oracle JDBC驱动程序是Oracle公司提供的一种Java数据库连接(JDBC)接口,用于在Java应用程序中与Oracle数据库进行交互。在Oracle-jdbc-12.2.0.1.zip压缩包中,包含了Oracle JDBC驱动的特定版本,即12.2.0.1,这是...
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm --基础包,为了运行OCI、OCCI、JDBC-OCI 这几个应用程序; oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm --补充包/文件,是为了运行sql*plus...
Oracle JDBC驱动程序是连接Java应用程序与Oracle数据库的关键组件。在Oracle 12c版本中,12.2.0.1是其中一个重要的发行版,它提供了对最新Oracle数据库特性的支持,同时也增强了性能和稳定性。Oracle JDBC驱动主要有...
mysql-connector-java-8.0.25.jar.txt文件可能是包含有关驱动使用方法、配置示例或版本变更日志的文档。阅读这个文件可以帮助开发者更好地理解和使用这个驱动程序。 总的来说,MySQL Connector/J 8.0.25是Java开发...
总结来说,"oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm"是Oracle Instant Client的一个关键组件,为Linux用户提供了一个轻便的数据库访问解决方案,特别适合于需要在远程或独立环境下使用SQL*Plus或...
4. **ODBC(Open Database Connectivity)**:通过ODBC驱动,Oracle Instant Client使得Windows上的应用程序可以使用标准的ODBC API来连接Oracle数据库。 5. **JDBC(Java Database Connectivity)**:为Java应用...
Oracle的ojdbc驱动是连接Java应用程序到Oracle数据库的关键组件,特别是在使用Maven作为构建工具时。`ojdbc6-11.2.0.1.0.jar`是Oracle JDBC驱动程序的一个版本,专为Java 6设计。这个特定的版本支持Oracle数据库11g ...
Oracle Instant Client是Oracle公司提供的一款轻量级的数据库连接工具,它允许应用程序无需完整安装Oracle Database的情况下,也能与Oracle数据库进行交互。这个压缩包"oracle instantclient-basic-linux.x64-11.2....
oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm client 安装包 rpm -> deb : sudo alien xxx.rpm
oracle-instantclient-basic-11.1.0.1-1.x86_64.rpm
JDBC是Sun Microsystems(现为Oracle公司)为Java编程语言设计的一套标准API,它的主要功能是为Java开发者提供一种统一的方式来访问各种不同类型的数据库,而无需关心具体的数据库厂商。通过JDBC,开发者可以编写...
首先,JDBC 是 Java 平台上用于访问数据库的标准 API,由 Sun Microsystems(现为 Oracle 公司)开发。它提供了一组接口和类,使得程序员可以编写与数据库无关的代码,实现跨不同数据库系统的数据库操作。MySQL ...
MySQL Connector/J是MySQL数据库管理系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用中访问MySQL数据库。`mysql-connector-...
总的来说,"Instantclient-basic-windows.x64-11.2.0.4.0.rar"为Python开发者提供了一种在Windows环境中高效、便捷地访问Oracle数据库的方法。通过正确配置和使用,可以极大地提升开发效率并简化数据库管理工作。
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm 64位 只为了方便大家下载,请还是以官方的为准
Oracle Instant Client是一款轻量级的数据库连接工具,主要用于在客户端计算机上实现对Oracle数据库服务器的快速访问。在本例中,我们关注的是"instantclient-basic-windows.x64-12.1.0.2.0.zip"这个压缩包,它是...
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Main { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/...
当需要连接数据库时,开发者会使用JDBC API,如`java.sql.DriverManager`类的`getConnection()`方法,指定数据库URL、用户名和密码来建立连接。 总结一下,这三个JAR文件提供了Java与MySQL和Oracle数据库间的桥梁。...
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Main { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/...