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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere JDBC ドライバ » JDBC を使用したデータへのアクセス

 

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

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 の出力結果はデータベース・サーバ・メッセージ・ウィンドウに表示されます。

♦  JDBC Insert のサンプルを実行するには、次の手順に従います。
  1. Interactive SQL を使用して、DBA としてサンプル・データベースに接続します。

  2. JDBCExample クラスがインストールされていることを確認します。

    Java のサンプル・クラスをインストールする方法の詳細については、サンプルの準備を参照してください。

  3. クラスの JDBCExample.main メソッドのラッパとして動作する JDBCExample という名前のストアド・プロシージャを定義します。

    CREATE PROCEDURE JDBCExample( IN arg CHAR(50) )
      EXTERNAL NAME 'JDBCExample.main([Ljava/lang/String;)V'
      LANGUAGE JAVA;
  4. 次のように JDBCExample.main メソッドを呼び出します。

    CALL JDBCExample( 'insert' );

    引数の文字列に 'insert' を指定すると、InsertStatic メソッドが呼び出されます。

  5. ローが Departments テーブルに追加されたことを確認します。

    SELECT * FROM Departments;

    サンプル・プログラムでは、Departments テーブルの更新された内容をデータベース・サーバ・メッセージ・ウィンドウに表示します。

  6. DeleteStatic という名前のサンプル・クラスには、追加されたばかりのローを削除する同じようなメソッドがあります。次のように JDBCExample.main メソッドを呼び出します。

    CALL JDBCExample( 'delete' );

    引数の文字列に 'delete' を指定すると、DeleteStatic メソッドが呼び出されます。

  7. ローが Departments テーブルから削除されたことを確認します。

    SELECT * FROM Departments;

    サンプル・プログラムでは、Departments テーブルの更新された内容をデータベース・サーバ・メッセージ・ウィンドウに表示します。