JDBC による プロシージャの実行

サンプルストアド プロシージャの名前は SP_D1 です。ユーザー名とパスワードは、guest と password です。このセクションのサンプル Java コードは、2 つのカーソルを返すストアド プロシージャを実行します。

JDBC を介してストアド プロシージャを実行するには

1. ストアド プロシージャを TDV データ サービスとして次のディレクトリにパブリッシュします。
Data Services/Databases/ds
2. Java コードを作成してコンパイルし、クラス ファイルをディレクトリに保存します。

MultipleCursors を使用したサンプル コード」を参照してください。

3. クラス ファイルを保存したディレクトリから、次のコマンドを実行します。
java -classpath <path_to_csjdbc.jar_file>/csjdbc.jar\;. <MultipleCursors>

MultipleCursors はクラス ファイルの名前であり、csjdbc.jar はクラス ファイルを含む JAR ファイルの名前です。

MultipleCursors を使用したサンプル コード

import java.sql.*;
public class MultipleCursors
{
    private static final String COMPOSITE_URL =
    "jdbc:compositesw:dbapi@localhost:9401?domain=composite&dataSource=ds";
    private static final String COMPOSITE_DRIVER =
    "cs.jdbc.driver.CompositeDriver";
    private static final String COMPOSITE_USER = "guest";
    private static final String COMPOSITE_PASSWORD = "password";
    public static void main (String[] args) {
    try {
      Class.forName(COMPOSITE_DRIVER);
    } catch (ClassNotFoundException ex) {
      ex.printStackTrace();
      return;
    }
    try {
      executeProcedure();
    } catch (SQLException ex) {
      ex.printStackTrace();
      return;
    }
  }
    private static void executeProcedure () 
    throws SQLException
  {
    Connection conn = DriverManager.getConnection(
      COMPOSITE_URL, COMPOSITE_USER, COMPOSITE_PASSWORD);
CallableStatement stmt = conn.prepareCall ("{call SP_D1 (?,?) }") ;
    stmt.registerOutParameter(1, Types.OTHER);
    stmt.registerOutParameter(2, Types.OTHER);
    stmt.execute();
    printResultSet((ResultSet)stmt.getObject(1));
    printResultSet((ResultSet)stmt.getObject(2));
    stmt.close();
    conn.close();
  }
    private static void printResultSet (ResultSet rs) 
    throws SQLException
  {
    ResultSetMetaData metaData = rs.getMetaData();
    int rowIndex = 0;
    while (rs.next()) {
      System.out.println("Row " + rowIndex++);
      for (int i=1; i<=metaData.getColumnCount(); i++) {
        System.out.println("  Column " + i + " " + metaData.getColumnName(i) +
                           " " + rs.getString(i));
      }
    }
  }
}