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(); } } |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |