Android
 Computer >> コンピューター >  >> プログラミング >> Android

JDBCのパラメータ化されたバッチ更新とは何ですか?例を挙げて説明しますか?


一連のINSERTまたはUPDATEまたはDELETEコマンド(更新カウント値を生成するコマンド)をグループ化し、それらを一度に実行するこのメカニズムは、バッチ更新と呼ばれます。

バッチ更新を使用してパラメーターを使用してクワイアを渡す場合、パラメーター化されたバッチ更新と呼ばれます。

通常、バッチ更新を実行するには、 addBatch()を使用して必要なすべてのステートメントを追加する必要があります。 メソッドを実行し、 executeBatch()を使用して実行します 方法:

//Creating a Statement object
Statement stmt = con.createStatement();
//Setting auto-commit false
con.setAutoCommit(false);
//Adding the statements to batch
stmt.addBatch("INSERT INTO Sales VALUES ('KeyBoard', 'Amith', 'January', 1000, 'Hyderabad')");
stmt.addBatch("INSERT INTO Sales VALUES ('Earphones', 'SUMITH', 'March', 500, 'Vishakhapatnam')");
stmt.addBatch("INSERT INTO Sales VALUES ('Mouse', 'Sudha', 'September', 200, 'Vijayawada')");
//Executing the batch
stmt.executeBatch();
を実行する

ここで上記のコードを観察すると、ステートメントの特定の部分がバッチに何度も追加されます。これの代わりに、プリペアドステートメントを使用してプレースホルダーとパス値を使用してクエリを作成するパラメーター化されたバッチ更新を実行できます。セッターメソッドを使用してこれらのプレースホルダーに送信します。

値を追加するときは、クエリの値の各セットをバッチに追加してから、それらを一度に実行する必要があります。

パラメータ化されたバッチ更新の作成

パラメータ化されたバッチ更新を作成するには、プレースホルダーを使用して値を挿入、更新、または削除するためのプリペアドステートメントを作成する必要があります。

setXXX()ステートメントを使用して、プレースホルダー、パラメーターに値を設定します。 addbatch()メソッドを使用して各値のセットをバッチに追加し、最後にexecuteBatchメソッドを使用してバッチを実行します。

注: ステートメントをバッチに追加する前に、 con.setAutoCommit(false)を使用して自動コミットをオフにする必要があります また、バッチを実行した後、 con.commit()を使用して変更を保存する必要があります メソッド。

データベースにSalesという名前のテーブルを作成し、次の説明を付けたと仮定します。

+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| Product_Name      | varchar(255) | YES  |     | NULL    |       |
| Name_Of_Customer  | varchar(255) | YES  |     | NULL    |       |
| Month_Of_Dispatch | varchar(255) | YES  |     | NULL    |       |
| Price             | int(11)      | YES  |     | NULL    |       |
| Location          | varchar(255) | YES  |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+

この例では、パラメーター化されたバッチ更新を使用して、上記のテーブルに一連のステートメントを挿入しようとします。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class ParameterizedBatchUpdate {
   public static void main(String args[])throws Exception {
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/testDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //Setting auto-commit false
      con.setAutoCommit(false);
      PreparedStatement pstmt = con.prepareStatement("INSERT INTO Sales VALUES (?, ?, ?, ?, ?)");
      pstmt.setString(1, "KeyBoard");
      pstmt.setString(2, "Amith");
      pstmt.setString(3, "January");
      pstmt.setInt(4, 1000);
      pstmt.setString(5, "Hyderabad");
      pstmt.addBatch();

      pstmt.setString(1, "Earphones");
      pstmt.setString(2, "Sumith");
      pstmt.setString(3, "March");
      pstmt.setInt(4, 500);
      pstmt.setString(5, "Vishakhapatnam");
      pstmt.addBatch();

      pstmt.setString(1, "Mouse");
      pstmt.setString(2, "Sudha");
      pstmt.setString(3, "September");
      pstmt.setInt(4, 500);
      pstmt.setString(5, "Vishakhapatnam");
      pstmt.addBatch();

      //Executing the batch
      stmt.executeBatch();
      //Saving the changes
      con.commit();
      System.out.println("Records inserted......");
   }
}

出力

Connection established......
Records inserted......

  1. 例を使用して、Cの揮発性および制限型修飾子を説明します

    型修飾子は、Cプログラミング言語の既存のデータ型に特別な属性を追加します。 C言語には3つの型修飾子があり、揮発性および制限型の修飾子については以下で説明します- 揮発性 揮発性型修飾子は、変数が共有されていることをコンパイラーに通知するために使用されます。つまり、変数が揮発性として宣言されている場合、変数は他のプログラム(または)エンティティによって参照および変更される可能性があります。 たとえば、volatile int x; 制限 これは、ポインターでのみ使用されます。これは、ポインタが差分データにアクセスするための最初の方法にすぎないことを示しています。最適化のためにコ

  2. イメージアレイとは何ですか? C++の例で説明する

    配列は、データのコレクションを格納および取得するための便利な方法です。 OpenCVでは、この概念を使用して、画像配列に複数の画像を読み込み、配列のインデックス番号を使用してそれらを表示できます。 次のプログラムは、マトリックス配列に複数の画像をロードし、インデックス番号で呼び出される配列の画像を表示します。 例 #include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; int main(int argc,const char**