java rollback用法,Java Connection rollBack()方法与示例
回滚操作将撤消当前事务所做的所有更改,即,如果调用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()方法与示例相关推荐
- java connection用法_Java Connection.close方法代码示例
import sun.rmi.transport.Connection; //导入方法依赖的package包/类 /** * handleMessages decodes transport oper ...
- java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例
本文整理汇总了Java中javax.crypto.SecretKeyFactory.generateSecret方法的典型用法代码示例.如果您正苦于以下问题:Java SecretKeyFactory ...
- java polygon 用法_Java Polygon.getBounds方法代码示例
import java.awt.Polygon; //导入方法依赖的package包/类 private SelectionShape translatePointsToRealSize(Select ...
- java makedir用法_Java Files.makeDir方法代码示例
import org.nutz.lang.Files; //导入方法依赖的package包/类 protected void download(String openid, String media_ ...
- java shape用法_Java PShape.scale方法代码示例
import processing.core.PShape; //导入方法依赖的package包/类 public void updateAnim(){ if(pg_src_small == null ...
- java gettext用法_Java Context.getText方法代码示例
import android.content.Context; //导入方法依赖的package包/类 /** * Song Details * * @param context * @param t ...
- java listview用法_Java ListView.setMultiChoiceModeListener方法代码示例
import android.widget.ListView; //导入方法依赖的package包/类 @Override public void onActivityCreated(@Nullabl ...
- java gettext用法_Java Label.getText方法代码示例
import javafx.scene.control.Label; //导入方法依赖的package包/类 private void initVBox(){ ClassNode node = (Cl ...
- java settext用法_Java JFormattedTextField.setText方法代码示例
import javax.swing.JFormattedTextField; //导入方法依赖的package包/类 /** * Creates a {@link JFormattedTextFie ...
- java format用法_Java String format() 方法
例如: String 类的 format 方法可以格式化日期和时间import java.util.Date; import java.util.Locale; public class Main { ...
最新文章
- 网络扫描工具Nmap常用命令
- 用数学方式打开Facebook新Logo,真的和视频号Logo来自同一方程
- at指令 fpga_FPGA毕设系列 | 无线通信
- python思维导图完整版下载高清_快速学习 Python 的全套 14 张思维导图(附高清版下载)...
- Qt Creator调试Qt Quick项目
- junit4.0/4.9与testng6.4 pom依赖对比
- 使用标定板对相机位姿进行估计
- 如何使用阿里云ARMS轻松重现用户浏览器问题
- 【Hibernate】性能优化之缓存管理
- 昨天1024程序员节,我故意写了个死循环~
- Windows批处理命令学习笔记(1)
- 如何区分国内上网环境中不同的人为网络故障
- ArcGIS 10.5 及 ArcGIS Server下载安装破解环境配置
- 使用procexp.exe查看线程详细信息
- 用DEV-C++制作狼人杀
- Kelvin connection of PCB traces for current sensing--Cypress
- Vue百度地图电子围栏
- arguments的使用:
- 《机器学习:实用案例解析》,读书笔记
- 机房收费系统 项目总结