この記事では、JDBCに基づいた倉庫内外の取引、銀行の譲渡、商品のJavaの実装について説明します。次のように、参照のために共有してください。
1。ビジネスを転送します
転送が2つのSQLステートメントを実行する必要があり(更新更新)、両方が成功すると、トランザクションが送信されます。失敗した場合、両方ともトランザクションをロールバックします。
2。トランザクションには、原子性、一貫性、分離、および持続性の4つの属性が必要です。これらの4つの属性は、通常、酸属性と呼ばれます。
①原子性。トランザクションは分離不可能な作業単位であり、トランザクションに含まれるすべての操作が行われるかどうかです。
②一貫性。トランザクションは、データベースをある一貫した状態から別の状態に変更する必要があります。一貫性は原子性と密接に関連しています。
③分離。取引の実行は、他のトランザクションによって干渉することはできません。つまり、トランザクション内の操作と使用されるデータは、他の同時トランザクションから分離されており、実行されたトランザクションは互いに干渉することはできません。
inurability耐久性。永続性は永続性とも呼ばれます。つまり、トランザクションがコミットされると、データベース内のデータの変更は永続的である必要があります。他の後続の操作または障害は、それらに影響を与えるべきではありません。
3.以下は、ケースとして転送操作を使用したデモの説明です。注意点は次のとおりです。
(1)SQLステートメント操作は手動トランザクションの提出を必要としません
(2)クエリ操作では、手動トランザクションの提出を必要としません。
(3)ただし、更新、挿入、および削除手動トランザクションの提出が必要です
(4)バランスが負の場合、最初に結果を照会してから判断を下してから動作することができます
(5) con.setAutoCommit(false);トランザクションを手動で開始します。 con.commit();トランザクションを手動でコミットします。 con.rollback();トランザクションロールバック操作
4.最初にデータテーブルまたは2つのデータテーブルを作成します。ここでは、デモンストレーションを明確にするために2つのデータテーブルを作成します。
5.データベースとデータテーブルを作成してから、ツールクラスBasedao.javaを書き込みます
パッケージcom.bie.utils; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedStatement; import java.sql.resultset; Import java.sql.sqlexception;データベースへの接続*/public class Basedao {private static string driver = "com.mysql.jdbc.driver"; private static string url = "jdbc:mysql:/// test"; private static string user = "root"; private static string password = "123456"; /*** *データベースに接続するメソッド * @return * @Throws ClassNotFoundException * @Throws SQLEXCEPTION */public Static Connection getCon()Throws ClassNotFoundException、sqlexception {class.forname();接続con = drivermanager.getConnection(url、user、password); system.out.println( "テストデータベースリンクの正常に"); con; }/ *** *データベースを閉じるメソッド * @param con * @param ps * @param rs */ public static void close(connection con、preatedstatement ps、resultet rs){if(rs!= null){//リソースを閉じて例外を回避{rs.Close(); } catch(sqlexception e){// todo auto-enerated catch block e.printstacktrace(); }} if(ps!= null){try {ps.close(); } catch(sqlexception e){// todo auto-enerated catch block e.printstacktrace(); }} if(con!= null){try {con.close(); } catch(sqlexception e){// todo auto-enerated catch block e.printstacktrace(); }}} / *** * * @param sql * @param arr * @return * / public static boolean addupdatedelete(string sql、object [] arr){connection con = null; represedStatement PS = null; try {con = basedao.getCon(); //ステップ1:データベースps = con.preparestatement(sql); //ステップ2:precompile //ステップ3:値を設定するif(arr!= arr.length!= 0){for(int i = 0; i <arr.length; i++){i+ }} int count = ps.executeUpdate(); //ステップ4:sqlステートメントを実行するif(count> 0){return true; } else {return false; }} catch(classNotFoundException e){// dodo auto-enerated catch block e.printstacktrace(); } catch(sqlexception e){// todo auto-enerated catch block e.printstacktrace(); } falseを返します。 } /*public static void main(string [] args){try {badedao.getCon(); } catch(classNotFoundException e){// todo auto-enerated catch block e.printstacktrace(); } catch(sqlexception e){// todo auto-enerated catch block e.printstacktrace(); }}*/}6.テストはメイン方法で直接実行されるため、テスト用にuserdaoを書き、効果を調べました。
パッケージcom.bie.dao;インポートjava.sql.connection; Import java.sql.preparedStatement; Import java.sql.sqlexception; Import com.bie.utils.basedao;注: *(1)SQLステートメント操作では手動トランザクションの提出を必要としません *(2)クエリ操作には手動トランザクションの提出は必要ありません *(3)ただし、削除、削除するには手動トランザクションの提出が必要です *(4)バランスがネガティブな場合は、結果をクエリしてから判断してから判断してから操作 * @param represedStatement PS1 = null; reprendStatement PS2 = null; try {//ステップ1:データベースに接続する操作con = basedao.getCon(); //トランザクションはデフォルトで自動的に送信されるため、デフォルトは真です。これでtrueをfalseに変更すると、デフォルトの自動トランザクションが禁止されています//con.setautocommit(true); //トランザクション1:falseに設定されている場合、トランザクションを手動で送信する必要があります。 //ステップ2:更新されたsqlステートメント文字列sql = "bank_a set usera_rmb = usera_rmb-500ここでusera_id = 1"; String SQL2 = "Update Bank_b Set userb_rmb = userb_rmb+500 Where userb_id = 1"; //ステップ3:SQL PS1 = con.preparestatement(SQL)を事前コンパイルします。 //ステップ4:SQLステートメントを実行します。 SQLは実行されていますが、データベースps1.executeupdate()に持続せず更新されていません。 //ステップ3:PRECompile SQL2 PS2 = Con.Preparestatement(SQL2); //ステップ4:SQL2を実行します。 SQL2は実行されていませんが、データベースps2.executeupdate()に持続して更新されていません。 System.out.println( "転送成功..."); //トランザクション2:トランザクションを手動でコミットします。両方の実行が成功した場合は、トランザクションcon.commit()をコミットします。 } catch(classNotFoundException e){e.printstacktrace(); try {//トランザクション3:例外がスローされている場合は、トランザクションcon.rollback()をロールバックします。 } catch(sqlexception e1){e1.printstacktrace(); }} catch(sqlexception e){e.printstacktrace(); }最後に{//リソースを閉じて、例外を避けるためにbasedao.close(Con、PS1、null); basedao.close(null、ps2、null); }}}デモ効果は次のとおりです。
Java関連のコンテンツの詳細については、このサイトのトピックをご覧ください:「JDBCを使用してデータベースを操作するJavaのスキルの要約」、「Java+MySQLデータベースプログラミングの概要」、Javaデータ構造とアルゴリズムに関するチュートリアル」、「Javaファイルの概要」と「Java Operation operication operication opercis opy opercy opy operic oper oper oper oper oper oper oper oper oper oper oper oper oper oper incha」スキル」
この記事がみんなのJavaプログラミングに役立つことを願っています。