ホームページ  >  記事  >  データベース  >  JDBC の PreparedStatement とは何ですか?

JDBC の PreparedStatement とは何ですか?

WBOY
WBOY転載
2023-09-11 09:09:091420ブラウズ

JDBC の PreparedStatement とは何ですか?

PreparedStatementインターフェイスは、複数回実行できるプリコンパイルされた SQL ステートメントを表す Statement インターフェイスを拡張します。パラメータ化された SQL クエリを受け入れ、このクエリに 0 個以上のパラメータを渡すことができます。

最初、このステートメントはパラメーターの代わりにプレースホルダー "?" を使用します。後で、 PreparedStatement インターフェースの setXXX() メソッドを使用してパラメーターを渡し、これらを動的に実装できます。

PreparedStatement の作成

Connection インターフェイスの prepareStatement() メソッドを使用して、PreparedStatement (インターフェイス) を作成できます。このメソッドはクエリ (パラメータ化) を受け入れ、PreparedStatement オブジェクトを返します。

このメソッドを呼び出すと、Connection オブジェクトは指定されたクエリをデータベースに送信し、コンパイルして保存します。クエリが正常にコンパイルされると、オブジェクトのみが返されます。

クエリをコンパイルするために、データベースは値を必要としないため、(0 個以上の) プレースホルダー (疑問符 " ?") を代わりに使用できます。のクエリ値の。

たとえば、データベースに Employee という名前のテーブルがある場合、次のクエリを使用してテーブルを作成します。

CREATE TABLE Employee(Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255));

これで、以下に示すように準備されたステートメントを使用して値を挿入できるようになります。

//Creating a Prepared Statement
String query="INSERT INTO Employee(Name, Salary, Location)VALUES(?, ?, ?)";
Statement pstmt = con.prepareStatement(query);

プレースホルダーの値を設定します

PreparedStatementインターフェイスには、setInt()、setFloat()、setArray()、setDate() などのいくつかのセッター メソッドが用意されています。 、setDouble() などは、プリコンパイルされたステートメントのプレースホルダーの値を設定するために使用されます。

これらのメソッドは 2 つのパラメーターを受け入れます。1 つはプレースホルダーの位置インデックスを表す整数値で、もう 1 つは挿入する必要がある値を表す int、String、float などです。

次の例の setter メソッドを使用して、上で作成したステートメントのプレースホルダーの値を設定できます。

pstmt.setString(1, "Amit");
pstmt.setInt(2, 3000);
pstmt.setString(3, "Hyderabad");

pstmt.setString(1, "Kalyan");
pstmt.setInt(2, 4000);
pstmt.setString(3, "Vishakhapatnam");

pstmt.setString(1, "Renuka");
pstmt.setInt(2, 5000);
pstmt.setString(3, "Delhi");

pstmt.setString(1, "Archana");
pstmt.setInt(2, 15000);
pstmt.setString(3, "Mumbai");

Execute Prepared Statement

PreparedStatement オブジェクトの作成後を実行するには、PreparedStatement インターフェイスの execute() メソッドの 1 つ (execute ()executeUpdate()、executeQuery()) を使用します。

  • execute(): strong> このメソッドは、現在のプリペアド ステートメント オブジェクトで通常の静的 SQL ステートメントを実行し、ブール値を返します。

  • executeQuery(): このメソッドは

  • executeUpdate() を実行します: このメソッドは現在の Prepared で挿入更新や削除などの SQL DML ステートメントを実行します。影響を受ける行数を表す整数値を返します。

上で作成したプリペアド ステートメントは次のように実行できます。

この例では、プリペアド ステートメントを使用してみます。ステートメントは値を挿入します。 「従業員」という名前のテーブルに追加します。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class PreparedStatementExample {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());

      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/testdb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");

      //Creating a Prepared Statement
      String query = "INSERT INTO Employees(Name, Salary, Location) VALUES (?, ?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);

      pstmt.setString(1, "Amit");
      pstmt.setInt(2, 3000);
      pstmt.setString(3, "Hyderabad");

      pstmt.setString(1, "Kalyan");
      pstmt.setInt(2, 4000);
      pstmt.setString(3, "Vishakhapatnam");

      pstmt.setString(1, "Renuka");
      pstmt.setInt(2, 5000);
      pstmt.setString(3, "Delhi");

      pstmt.setString(1, "Archana");
      pstmt.setInt(2, 15000);
      pstmt.setString(3, "Mumbai");

      int num = pstmt.executeUpdate();
      System.out.println("Rows inserted ....");
   }
}

出力

Connection established......
Number of rows inserted: 1

データベースを検証すると、テーブルに挿入された値を確認できます:

+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+
5 rows in set (0.00 sec)

以上がJDBC の PreparedStatement とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。