バッチ更新機能を利用してデータを更新するプログラム例について説明します。
以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“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();
}
}
}