ホームページ  >  記事  >  データベース  >  MySQL トランザクション処理の基本を始める

MySQL トランザクション処理の基本を始める

PHPz
PHPzオリジナル
2017-04-02 17:06:491159ブラウズ

1. mysqlトランザクションとは何ですか?

事務とは一般に、やるべきことや行われることを指します。コンピュータ用語では、データベース内のさまざまなデータ項目にアクセスし、場合によっては更新するプログラム実行ユニット (ユニット) を指します。

2.

mysqlトランザクションいつ使用しますか?

ユーザーデータの整合性を確保するために複数のテーブルを同時に操作するときに一般的に使用されます~

3、

mysqlトランザクションどうやって使用しますか?

MYSQL のトランザクション処理には主に 2 つの方法があります

1. begin、rollback、commit を使用して実装します トランザクションを開始します
トランザクションをロールバックします
トランザクションをコミットします
2.
set
を直接使用して変更しますmysql 自動送信モード MySQL はデフォルトで自動的に送信されます。つまり、クエリを送信すると、クエリが直接実行されます。 set autocommit = 0 を使用して自動送信を無効にする
set autocommit = 1 を使用して自動送信を有効にする
を使用してトランザクション処理を実装できます。
ただし、set autocommit = 0 を使用すると、コミットまたはロールバックで確認するまで、後続のすべての SQL がトランザクションとして処理されることに注意してください。このトランザクションを終了すると、新しいトランザクションも開始されることに注意してください。最初の方法に従って、現在のもののみをトランザクションとして使用します!


MYSQL は INNODB および BDB タイプのデータ テーブルのトランザクション処理のみをサポートし、他のタイプはサポートされません!

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。