テストおよびデバッグ用のトランザクション・ユーティリティ・メソッドの使用

Transactionインタフェースには、問合せとアプリケーションをテストおよびデバッグするための次のようなユーティリティ・メソッドが用意されています。

dumpQueryResultの使用方法

次のコード例では、dumpQueryResultが使用されています。

  public static void demoSimpleFetch(ApplicationModule appMod) {
// Define and execute a simple SQL statement.
String sqlStr = "SELECT Emp.ename FROM EMP Emp ";
// dumpQueryResult is a utility method for testing queries.
String result = appMod.getTransaction().dumpQueryResult(sqlStr,
"oracle.jbo.server.QueryDumpTab",
null);
    System.out.println(sqlStr);
System.out.println(result);
}

executeCommandの使用方法

次のコード例では、executeCommandが使用されています。SQL文字列は、EMP表を更新するように設計されています。この例では、文字列がexecuteCommandに渡され、実際に更新された行の数を示すメッセージが表示されます。

   public static void demoUpdateColumn(ApplicationModule appMod) {
String sqlStr = "UPDATE EMP " +
"SET MGR=7007 " +
"WHERE MGR=7698 ";
      int n = appMod.getTransaction().executeCommand(sqlStr);
System.out.println("Updated " + n + " rows.");
}

executeCommandでは有効なSQL文がすべて実行されるため、このメソッドを使用する際は十分に注意してください。たとえば、次のようなDDLコマンドの操作を実行するとします。

appMod.getTransaction().executeCommand("DROP TABLE MYTEMPTABLE");

この場合、DDL操作で実行された暗黙的なコミットにより、未処理のデータベース・トランザクションが誤ってコミットされてしまったり、行ロックが解除されてしまう可能性があります。