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));
}
}
}
}