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

JDBC の CallableStatement とは何ですか?

PHPz
PHPz転載
2023-09-07 23:53:02929ブラウズ

JDBC 中的 CallableStatement 是什么?

#CallableStatement このインターフェイスは、ストアド プロシージャを実行するためのメソッドを提供します。 JDBC API はストアド プロシージャ SQL エスケープ構文を提供するため、すべての RDBMS に対して 1 つの標準的な方法でストアド プロシージャを呼び出すことができます。

CallableStatement の作成

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 サイトの他の関連記事を参照してください。

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