Statement オブジェクトは、静的 SQL 文を実行します。INSERT、UPDATE、DELETE など結果セットを返さない SQL 文の実行には、Statement オブジェクトの executeUpdate メソッドを使用します。CREATE TABLE などの文やその他のデータ定義文も、executeUpdate を使用して実行できます。
iAnywhere JDBC ドライバを使用してバッチ挿入を実行する場合は、小さなカラム・サイズを使用することを推奨します。バッチ挿入を使用して、大きなバイナリ・データや文字データを long binary カラムや long varchar カラムに挿入すると、パフォーマンスが低下する可能性があるため、推奨しません。パフォーマンスが低下するのは、バッチ挿入されるローをすべて保持するために iAnywhere JDBC ドライバが大容量のメモリを割り当てる必要があるためです。これ以外の場合では、バッチ挿入を使用することで個別に挿入するよりも高いパフォーマンスを維持できます。
アプリケーションでバッチ挿入を使用してサイズの大きいデータを long binary カラムや long varchar カラムに挿入しない場合、すべてのバッチ挿入カラムの最大フィールド・サイズはデフォルトで 256 K となります。アプリケーションで 256 K 以上のカラム・データをバッチ挿入する必要がある場合は、Statement.setMaxFieldSize() メソッドで指定する最大フィールド・サイズを大きくしてからバッチ挿入を実行する必要があります。
次のコード・フラグメントは、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(); } } |
このコード・フラグメントは、samples-dir\SQLAnywhere\JDBC ディレクトリに含まれている JDBCExample クラスの一部です。
executeUpdate メソッドは整数を返します。この整数は、操作の影響を受けるローの番号を表しています。この場合、INSERT が成功すると、値 1 が返されます。
サーバ側のクラスとして実行すると、System.out.println
の出力結果はデータベース・サーバ・メッセージ・ウィンドウに表示されます。
Interactive SQL を使用して、DBA としてサンプル・データベースに接続します。
JDBCExample クラスがインストールされていることを確認します。
Java のサンプル・クラスをインストールする方法の詳細については、サンプルの準備を参照してください。
クラスの JDBCExample.main メソッドのラッパとして動作する JDBCExample という名前のストアド・プロシージャを定義します。
CREATE PROCEDURE JDBCExample( IN arg CHAR(50) ) EXTERNAL NAME 'JDBCExample.main([Ljava/lang/String;)V' LANGUAGE JAVA; |
次のように JDBCExample.main メソッドを呼び出します。
CALL JDBCExample( 'insert' ); |
引数の文字列に 'insert'
を指定すると、InsertStatic メソッドが呼び出されます。
ローが Departments テーブルに追加されたことを確認します。
SELECT * FROM Departments; |
サンプル・プログラムでは、Departments テーブルの更新された内容をデータベース・サーバ・メッセージ・ウィンドウに表示します。
DeleteStatic という名前のサンプル・クラスには、追加されたばかりのローを削除する同じようなメソッドがあります。次のように JDBCExample.main メソッドを呼び出します。
CALL JDBCExample( 'delete' ); |
引数の文字列に 'delete'
を指定すると、DeleteStatic メソッドが呼び出されます。
ローが Departments テーブルから削除されたことを確認します。
SELECT * FROM Departments; |
サンプル・プログラムでは、Departments テーブルの更新された内容をデータベース・サーバ・メッセージ・ウィンドウに表示します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |