回滚操作将撤消当前事务所做的所有更改,即,如果调用Connection接口的rollBack()方法,则所有修改都将还原到最后一次提交。

您还可以通过将所需的Savepoint对象作为参数传递给此方法,将数据库中的更改回滚到特定的保存点,如下所示://Setting the save point

con.rollback("MysavePoint");

回滚事务

使用DriverManager类的registerDriver()方法将驱动程序注册为-//注册驱动程序

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

使用getConnection()DriverManager类的方法获取连接,如下所示://获得连接

String url = "jdbc:mysql://localhost/mydatabase";

Connection con = DriverManager.getConnection(url, "root", "password");

使用setAutoCommit()方法关闭自动提交,如下所示://将自动提交设置为false-

con.setAutoCommit(false);

使用setSavepoint()设置保存点,或者使用以下commit()方法提交事务:Savepoint savePoint = con.setSavepoint("MysavePoint");

Con.commit();

最后,回滚到最后一个保存点,或者使用rollback()或rollback(Savepoint savepoint)方法最后提交。con.rollback()

Or,

con. rollback(mySavepoint);

让我们使用CREATE语句在MySQL数据库中创建一个名为MyPlayers的表,如下所示-CREATE TABLE MyPlayers(

ID INT,

First_Name VARCHAR(255),

Last_Name VARCHAR(255),

Date_Of_Birth date,

Place_Of_Birth VARCHAR(255),

Country VARCHAR(255),

PRIMARY KEY (ID)

);

现在,我们将使用INSERT语句在MyPlayers表中插入7条记录-insert into MyPlayers values(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');

insert into MyPlayers values(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');

insert into MyPlayers values(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');

insert into MyPlayers values(4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');

insert into MyPlayers values(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');

insert into MyPlayers values(6, 'Ravindra', 'Jadeja', DATE('1988-12-06'), 'Nagpur', 'India');

insert into MyPlayers values(7, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');

以下JDBC程序演示了Connection接口的rollback()方法。在这里,我们在Myplayers表中插入了一条新记录。使用该commit()方法完成事务,删除先前插入的记录,然后回滚到创建的保存点,并显示表的内容

示例import java.sql.Connection;

import java.sql.Date;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class Connection_rollBack {

public static void main(String args[]) throws SQLException {

//注册驱动程序

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

//获得连接

String url = "jdbc:mysql://localhost/mydatabase";

Connection con = DriverManager.getConnection(url, "root", "password");

System.out.println("Connection established......");

//将自动提交设置为false-

con.setAutoCommit(false);

//创建一个Statement对象

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

//检索数据

ResultSet rs = stmt.executeQuery("select * from MyPlayers");

System.out.println("Contents of the table initially");

while(rs.next()) {

System.out.print("ID: "+rs.getString("ID")+", ");

System.out.print("First_Name: "+rs.getString("First_Name")+", ");

System.out.print("Last_Name: "+rs.getString("Last_Name")+", ");

System.out.print("Date_Of_Birth: "+rs.getString("Date_Of_Birth")+", ");

System.out.print("Place_Of_Birth: "+rs.getString("Place_Of_Birth")+", ");

System.out.print("Country: "+rs.getString("Country"));

System.out.println("");

}

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyPlayers VALUES (?, ?, ?, ?, ?, ?)");

pstmt.setInt(1, 8);

pstmt.setString(2, "Ishant");

pstmt.setString(3, "Sharma");

pstmt.setDate(4, new Date(904694400000L));

pstmt.setString(5, "Delhi");

pstmt.setString(6, "India");

pstmt.executeUpdate();

//提交事务

con.commit();

//删除记录

stmt.execute("Delete from MyPlayers where id = 8");

//回滚到保存点

con.rollback();

//回滚后表的内容

System.out.println("Contents of the table");

rs = stmt.executeQuery("select * from MyPlayers");

while(rs.next()) {

System.out.print("ID: "+rs.getString("ID")+", ");

System.out.print("First_Name: "+rs.getString("First_Name")+", ");

System.out.print("Last_Name: "+rs.getString("Last_Name")+", ");

System.out.print("Date_Of_Birth: "+rs.getString("Date_Of_Birth")+", ");

System.out.print("Place_Of_Birth: "+rs.getString("Place_Of_Birth")+", ");

System.out.print("Country: "+rs.getString("Country"));

System.out.println("");

}

}

}

现在,您可以观察结果中保存点之前创建的新记录,尽管我们已将其删除。

如果我们回滚一个事务,那么在上一次提交之后所做的所有更改都将被还原。

由于我们已在设置提交后删除了第8条记录,因此在回滚时将还原此删除。

输出结果Connection established......

Contents of the table initially

ID: 1, First_Name: Shikhar, Last_Name: Dhawan, Date_Of_Birth: 1981-12-05, Place_Of_Birth: Delhi, Country: India

ID: 2, First_Name: Jonathan, Last_Name: Trott, Date_Of_Birth: 1981-04-22, Place_Of_Birth: CapeTown, Country: SouthAfrica

ID: 3, First_Name: Kumara, Last_Name: Sangakkara, Date_Of_Birth: 1977-10-27, Place_Of_Birth: Matale, Country: Srilanka

ID: 4, First_Name: Virat, Last_Name: Kohli, Date_Of_Birth: 1988-11-05, Place_Of_Birth: Mumbai, Country: India

ID: 5, First_Name: Rohit, Last_Name: Sharma, Date_Of_Birth: 1987-04-30, Place_Of_Birth: Nagpur, Country: India

ID: 6, First_Name: Ravindra, Last_Name: Jadeja, Date_Of_Birth: 1988-12-06, Place_Of_Birth: Nagpur, Country: India

ID: 7, First_Name: James, Last_Name: Anderson, Date_Of_Birth: 1982-06-30, Place_Of_Birth: Burnley , Country: England

Contents of the table after rollback

ID: 1, First_Name: Shikhar, Last_Name: Dhawan, Date_Of_Birth: 1981-12-05, Place_Of_Birth: Delhi, Country: India

ID: 2, First_Name: Jonathan, Last_Name: Trott, Date_Of_Birth: 1981-04-22, Place_Of_Birth: CapeTown, Country: SouthAfrica

ID: 3, First_Name: Kumara, Last_Name: Sangakkara, Date_Of_Birth: 1977-10-27, Place_Of_Birth: Matale, Country: Srilanka

ID: 4, First_Name: Virat, Last_Name: Kohli, Date_Of_Birth: 1988-11-05, Place_Of_Birth: Mumbai, Country: India

ID: 5, First_Name: Rohit, Last_Name: Sharma, Date_Of_Birth: 1987-04-30, Place_Of_Birth: Nagpur, Country: India

ID: 6, First_Name: Ravindra, Last_Name: Jadeja, Date_Of_Birth: 1988-12-06, Place_Of_Birth: Nagpur, Country: India

ID: 7, First_Name: James, Last_Name: Anderson, Date_Of_Birth: 1982-06-30, Place_Of_Birth: Burnley , Country: England

ID: 8, First_Name: Ishant, Last_Name: Sharma, Date_Of_Birth: 1998-09-02, Place_Of_Birth: Delhi, Country: India

java rollback用法,Java Connection rollBack()方法与示例相关推荐

  1. java connection用法_Java Connection.close方法代码示例

    import sun.rmi.transport.Connection; //导入方法依赖的package包/类 /** * handleMessages decodes transport oper ...

  2. java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例

    本文整理汇总了Java中javax.crypto.SecretKeyFactory.generateSecret方法的典型用法代码示例.如果您正苦于以下问题:Java SecretKeyFactory ...

  3. java polygon 用法_Java Polygon.getBounds方法代码示例

    import java.awt.Polygon; //导入方法依赖的package包/类 private SelectionShape translatePointsToRealSize(Select ...

  4. java makedir用法_Java Files.makeDir方法代码示例

    import org.nutz.lang.Files; //导入方法依赖的package包/类 protected void download(String openid, String media_ ...

  5. java shape用法_Java PShape.scale方法代码示例

    import processing.core.PShape; //导入方法依赖的package包/类 public void updateAnim(){ if(pg_src_small == null ...

  6. java gettext用法_Java Context.getText方法代码示例

    import android.content.Context; //导入方法依赖的package包/类 /** * Song Details * * @param context * @param t ...

  7. java listview用法_Java ListView.setMultiChoiceModeListener方法代码示例

    import android.widget.ListView; //导入方法依赖的package包/类 @Override public void onActivityCreated(@Nullabl ...

  8. java gettext用法_Java Label.getText方法代码示例

    import javafx.scene.control.Label; //导入方法依赖的package包/类 private void initVBox(){ ClassNode node = (Cl ...

  9. java settext用法_Java JFormattedTextField.setText方法代码示例

    import javax.swing.JFormattedTextField; //导入方法依赖的package包/类 /** * Creates a {@link JFormattedTextFie ...

  10. java format用法_Java String format() 方法

    例如: String 类的 format 方法可以格式化日期和时间import java.util.Date; import java.util.Locale; public class Main { ...

最新文章

  1. 网络扫描工具Nmap常用命令
  2. 用数学方式打开Facebook新Logo,真的和视频号Logo来自同一方程
  3. at指令 fpga_FPGA毕设系列 | 无线通信
  4. python思维导图完整版下载高清_快速学习 Python 的全套 14 张思维导图(附高清版下载)...
  5. Qt Creator调试Qt Quick项目
  6. junit4.0/4.9与testng6.4 pom依赖对比
  7. 使用标定板对相机位姿进行估计
  8. 如何使用阿里云ARMS轻松重现用户浏览器问题
  9. 【Hibernate】性能优化之缓存管理
  10. 昨天1024程序员节,我故意写了个死循环~
  11. Windows批处理命令学习笔记(1)
  12. 如何区分国内上网环境中不同的人为网络故障
  13. ArcGIS 10.5 及 ArcGIS Server下载安装破解环境配置
  14. 使用procexp.exe查看线程详细信息
  15. 用DEV-C++制作狼人杀
  16. Kelvin connection of PCB traces for current sensing--Cypress
  17. Vue百度地图电子围栏
  18. arguments的使用:
  19. 《机器学习:实用案例解析》,读书笔记
  20. 机房收费系统 项目总结

热门文章

  1. 【技术干货】跨境茶话会9月期丨微服务的挑战
  2. 创业新手应避免的十大常见错误
  3. 网络创业者之家:写给新手的互联网创业干货,让你少走弯路
  4. 微信支付现金红包快速开通
  5. 软件分享--安卓纯文本记事本软件,支持多记事本与密码
  6. 河大计算机2015年招生计划,985高校2015年招生计划(河南省之二)
  7. Android菜单:选项菜单+上下文菜单+子菜单
  8. P1717 钓鱼 题解
  9. sublime 4 设置文件编码 GBK
  10. 科技人才与产业共振 清微智能与全球科学英才“星耀南湖”