[API] java.sql.CallableStatementインターフェース

java.sql.CallableStatementは、データベースのストアドプロシージャやストアドファンクションを実行するためのインターフェースです。

java.sql.CallableStatementの特徴

java.sql.CallableStatementは以下の特徴があります。

  • ストアドプロシージャ、ストアドファンクション、パッケージを実行できる
  • JDBCの一部なので、特定のデータベースに依存せずに使用できる

java.sql.CallableStatementのAPI

【主要メソッド】
戻値型メソッド静的説明
voidsetString(int a, String b)a番目の「?」にbをString型でセットする
voidsetInt(int a, int b)a番目の「?」にbをint型でセットする
voidsetLong(int a, long b)a番目の「?」にbをlong型でセットする
voidsetFloat(int a, float b)a番目の「?」にbをfloat型でセットする
voidsetDouble(int a, double b)a番目の「?」にbをdouble型でセットする
voidsetDate(int a, Date b)a番目の「?」にbをjava.sql.Date型でセットする
voidsetBoolean(int a, boolean b)a番目の「?」にbをboolean型でセットする
intgetInt(int a)a番目の「?」の値をint型で取得する
voidregisterOutParameter(int a, int b)a番目の「?」にOUTパラメータとして、java.sql.Types型を指定する
※下記表参照
longgetLong(int a)a番目の「?」の値をlong型で取得する
floatgetFloat(int a)a番目の「?」の値をfloat型で取得する
doublegetDouble(int a)a番目の「?」の値をdouble型で取得する
booleangetBoolean(int a)a番目の「?」の値をboolean型で取得する
StringgetString(int a)a番目の「?」の値をString型で取得する
DategetDate(int a)a番目の「?」の値をDate型で取得する
voidclearParameters()全てのパラメータをクリアする
intexecuteUpdate()実行する

java.sql.CallableStatementサンプル

(引数aとbを掛けた値を返すGET_MULTIPLEファンクションを実行する例)

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.CallableStatement;

public class DBFunctionExecSample {

    public static void main(String[] args) throws Exception{

        //変数定義
        Connection conn = null;
        CallableStatement cs = null;

        //DB接続情報を設定する
        String path = "jdbc:oracle:thin:@127.0.0.1:1521:testdb";  //接続パス
        String id = "user01";    //ログインID
        String pw = "password";  //ログインパスワード

        //ファンクションを定義する
        String sql = "{?=call GET_MULTIPLE(?, ?)}";

        try {
            //JDBCドライバをロードする
            Class.forName("oracle.jdbc.driver.OracleDriver");

            //DBへのコネクションを作成する
            conn = DriverManager.getConnection(path, id, pw);

            //実行するfunctionを指定してパラメータをセットする
            cs = conn.prepareCall(sql);
            cs.registerOutParameter(1, java.sql.Types.INTEGER);  //戻り値受取用
            cs.setInt(2, 3);
            cs.setInt(3, 4);

            //functionを実行する
            cs.executeUpdate();

            //戻り値を表示する
            System.out.println(cs.getInt(1));

        } catch (Exception ex) {
            //例外発生時の処理
            ex.printStackTrace();  //エラー内容をコンソールに出力する

        } finally {
            //クローズ処理
            if (cs != null) cs.close();
            if (conn != null) conn.close();
        }

    }

}
(実行結果)
C:\>java -cp ./;ojdbc8.jar DBFunctionExecSample 12

コメント

タイトルとURLをコピーしました