Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ プログラミング » JDBC サポート » JDBC を使用したデータへのアクセス

 

JDBC を使用した挿入、更新、削除

INSERT、UPDATE、DELETE など結果セットを返さない静的 SQL 文の実行には、Statement クラスの executeUpdate メソッドを使用します。CREATE TABLE などの文やその他のデータ定義文も、executeUpdate を使用して実行できます。

Statement クラスの addBatch、clearBatch、executeBatch メソッドも使用できます。Statement クラスの executeBatch メソッドの動作に関して JDBC 仕様は不明確であるため、SQL Anywhere JDBC ドライバでこのメソッドを使用する場合には、次の点に注意してください。

  • SQL 例外または結果セットが発生すると、バッチ処理がすぐに停止します。バッチ処理が停止すると、executeBatch メソッドによって BatchUpdateException がスローされます。BatchUpdateException で getUpdateCounts メソッドを呼び出すと、ローカウントの整数配列が返されます。バッチが失敗する前のカウントのセットには、負でない有効な更新カウントが含まれ、バッチが失敗したとき以降のすべてのカウントには、-1 の値が含まれます。BatchUpdateException を SQLException にキャストすると、バッチ処理の停止理由に関する詳細が示されます。

  • バッチは、clearBatch メソッドが明示的に呼び出された場合にのみ、クリアされます。したがって、executeBatch メソッドを繰り返し呼び出すと、バッチが何度も再実行されます。また、execute(sql_query) または executeQuery(sql_query) を呼び出すと、指定された SQL クエリは正しく実行されますが、基盤となるバッチはクリアされません。このため、executeBatch メソッドの後で、execute(sql_query) を呼び出してから、executeBatch メソッドを再度呼び出すと、一連のバッチ文が実行されてから指定の SQL クエリが実行され、その後で一連のバッチ文が再実行されます。

次のコードフラグメントは、INSERT 文の実行方法を示しています。ここでは、引数として InsertStatic に渡された Statement オブジェクトを使用しています。



public static void InsertStatic( Statement stmt )
{
  try
  {
    int iRows = stmt.executeUpdate(
      "INSERT INTO Departments (DepartmentID, DepartmentName)"
      + " VALUES (201, 'Eastern Sales')" );
    // Print the number of rows inserted
    System.out.println(iRows + " rows inserted");
  }
  catch (SQLException sqe)
  {
    System.out.println("Unexpected exception : " +
              sqe.toString() + ", sqlstate = " +
              sqe.getSQLState());
  }
  catch (Exception e)
  {
    e.printStackTrace();
  }
}
 注意