事務とは一般に、やるべきことや行われることを指します。コンピュータ用語では、データベース内のさまざまなデータ項目にアクセスし、場合によっては更新するプログラム実行ユニット (ユニット) を指します。
3、
1. begin、rollback、commit を使用して実装します トランザクションを開始します
トランザクションをロールバックします
トランザクションをコミットします
2.
set
を直接使用して変更しますmysql 自動送信モード MySQL はデフォルトで自動的に送信されます。つまり、クエリを送信すると、クエリが直接実行されます。 set autocommit = 0 を使用して自動送信を無効にする
set autocommit = 1 を使用して自動送信を有効にする
を使用してトランザクション処理を実装できます。
ただし、set autocommit = 0 を使用すると、コミットまたはロールバックで確認するまで、後続のすべての SQL がトランザクションとして処理されることに注意してください。このトランザクションを終了すると、新しいトランザクションも開始されることに注意してください。最初の方法に従って、現在のもののみをトランザクションとして使用します!
package shiwu;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class test {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps1 = null;
PreparedStatement ps2 = null;
try {
//加载驱动类
/* Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","bjpowernode"); */
String myDriver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://127.0.0.1:3306/test";
Class.forName(myDriver);
conn= DriverManager.getConnection(url,"root","bjpowernode");
// 将自动提交设置为 false,
//若设置为 true 则数据库将会把每一次数据更新认定为一个事务并自动提交
conn.setAutoCommit(false);
ps1 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");//?是占位符
ps1.setObject(1, "张三");
ps1.setObject(2, "666666");
ps1.execute();
System.out.println("插入一个用户张三");
try {
// 发生异常,回滚在本事务中的操做
conn.rollback();
// 事务回滚:转账的两步操作完全撤销
conn.close();
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?)");
ps2.setObject(1, "李四");
ps2.setObject(2, "123456");
ps2.execute();
System.out.println("插入一个用户李四");
// conn.commit();//提交事务
} catch (ClassNotFoundException e) {
e.printStackTrace();
try {
} catch (Exception e1) {
e1.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(ps1!=null){
ps1.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}注意:需要引入mysql-connector-java-5.6-bin.jar
以上がMySQL トランザクション処理の基本を始めるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。