バッチ更新機能を利用してデータを更新するプログラム例について説明します。
以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サンプルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。
// 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyBatchUpdate { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); //更新数の配列を用意します int[] updateCounts; //自動コミットモードの無効化 con.setAutoCommit(false); //PreparedStatementオブジェクトを作成します PreparedStatement pstmt = con.prepareStatement ( "INSERT INTO TABLE01 VALUES (?, ?)" ); //バッチ更新の準備をします pstmt.setInt(1, 100); pstmt.setString(2, "ABC"); pstmt.addBatch(); pstmt.setInt(1, 200); pstmt.setString(2, "DEF"); pstmt.addBatch(); //バッチ更新を実行します updateCounts = pstmt.executeBatch(); // PreparedStatementのオブジェクトをクローズします。 pstmt.close(); //トランザクションをコミットします con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } }