java.sql.CallableStatementは、データベースのストアドプロシージャやストアドファンクションを実行するためのインターフェースです。
java.sql.CallableStatementの特徴
java.sql.CallableStatementは以下の特徴があります。
- ストアドプロシージャ、ストアドファンクション、パッケージを実行できる
- JDBCの一部なので、特定のデータベースに依存せずに使用できる
java.sql.CallableStatementのAPI
戻値型 | メソッド | 静的 | 説明 |
---|---|---|---|
void | setString(int a, String b) | a番目の「?」にbをString型でセットする | |
void | setInt(int a, int b) | a番目の「?」にbをint型でセットする | |
void | setLong(int a, long b) | a番目の「?」にbをlong型でセットする | |
void | setFloat(int a, float b) | a番目の「?」にbをfloat型でセットする | |
void | setDouble(int a, double b) | a番目の「?」にbをdouble型でセットする | |
void | setDate(int a, Date b) | a番目の「?」にbをjava.sql.Date型でセットする | |
void | setBoolean(int a, boolean b) | a番目の「?」にbをboolean型でセットする | |
int | getInt(int a) | a番目の「?」の値をint型で取得する | |
void | registerOutParameter(int a, int b) | a番目の「?」にOUTパラメータとして、java.sql.Types型を指定する ※下記表参照 | |
long | getLong(int a) | a番目の「?」の値をlong型で取得する | |
float | getFloat(int a) | a番目の「?」の値をfloat型で取得する | |
double | getDouble(int a) | a番目の「?」の値をdouble型で取得する | |
boolean | getBoolean(int a) | a番目の「?」の値をboolean型で取得する | |
String | getString(int a) | a番目の「?」の値をString型で取得する | |
Date | getDate(int a) | a番目の「?」の値をDate型で取得する | |
void | clearParameters() | 全てのパラメータをクリアする | |
int | executeUpdate() | 実行する |
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
コメント