#CallableStatement このインターフェイスは、ストアド プロシージャを実行するためのメソッドを提供します。 JDBC API はストアド プロシージャ SQL エスケープ構文を提供するため、すべての RDBMS に対して 1 つの標準的な方法でストアド プロシージャを呼び出すことができます。
Connection の prepareCall() メソッドを使用して、CallableStatement (インターフェイス) を作成できます。インターフェース。このメソッドは、ストアド プロシージャを呼び出すクエリを表す文字列変数を受け取り、CallableStatement オブジェクトを返します。
呼び出し可能なステートメントには、入力パラメータ、出力パラメータ、またはその両方を含めることができます。入力パラメータをプロシージャ呼び出しに渡すには、プレースホルダを使用し、CallableStatement インターフェイスによって提供されるセッター メソッド (setInt()、setString()、setFloat()) を使用してこれらのパラメータの値を設定します。
データベースに myProcedure という名前のプロシージャがあると仮定すると、次のように呼び出し可能ステートメントを準備できます。
//Preparing a CallableStatement CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
setter を使用できます。プロシージャ呼び出しの入力パラメータの値を設定するメソッド。
これらは 2 つのパラメータを受け入れます。1 つは入力パラメータの配置インデックスを表す整数値で、もう 1 つは必要な値を表す int、String、float などです。合格 プロセスにパラメータを入力します。
注: インデックスに加えて、パラメータ名を文字列形式で渡すこともできます。
cstmt.setString(1, "Raghav"); cstmt.setInt(2, 3000); cstmt.setString(3, "Hyderabad");
CallableStatement オブジェクトを作成した後、execute() メソッドの 1 つを使用してそれを実行できます。
cstmt.execute();
MySQL データベースに Employee という名前のテーブルがあり、次のデータが含まれているとします。
+---------+--------+----------------+ | Name | Salary | Location | +---------+--------+----------------+ | Amit | 30000 | Hyderabad | | Kalyan | 40000 | Vishakhapatnam | | Renuka | 50000 | Delhi | | Archana | 15000 | Mumbai | +---------+--------+----------------+
という名前のテーブルを作成します。以下に示すように、myProcedure を使用してテーブルに値を挿入します。
Create procedure myProcedure (IN name VARCHAR(30), IN sal INT, IN loc VARCHAR(45)) -> BEGIN -> INSERT INTO Employee(Name, Salary, Location) VALUES (name, sal, loc); -> END //
これは、呼び出し可能ステートメントを使用して上記で作成したプロシージャを呼び出し、新しいレコードを Employee テーブルに挿入する JDBC の例です。
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class CallableStatementExample { 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......"); //Preparing a CallableStateement CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}"); cstmt.setString(1, "Raghav"); cstmt.setInt(2, 3000); cstmt.setString(3, "Hyderabad"); cstmt.setString(1, "Kalyan"); cstmt.setInt(2, 4000); cstmt.setString(3, "Vishakhapatnam"); cstmt.setString(1, "Rukmini"); cstmt.setInt(2, 5000); cstmt.setString(3, "Delhi"); cstmt.setString(1, "Archana"); cstmt.setInt(2, 15000); cstmt.setString(3, "Mumbai"); cstmt.execute(); System.out.println("Rows inserted ...."); } }
Connection established...... Rows inserted ....
選択クエリを使用して Employee テーブルの内容を取得すると、新しく追加されたレコードを次のように確認できます。
以上がJDBC の CallableStatement とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。