PreparedStatementインターフェイスは、複数回実行できるプリコンパイルされた SQL ステートメントを表す Statement インターフェイスを拡張します。パラメータ化された SQL クエリを受け入れ、このクエリに 0 個以上のパラメータを渡すことができます。
最初、このステートメントはパラメーターの代わりにプレースホルダー "?" を使用します。後で、 PreparedStatement インターフェースの setXXX() メソッドを使用してパラメーターを渡し、これらを動的に実装できます。
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");
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 サイトの他の関連記事を参照してください。