ページの先頭行へ戻る
Symfoware Server V12.1.x アプリケーション開発ガイド(JDBCドライバ編)
FUJITSU Software

A.17 バッチ更新機能を利用してデータを更新する

バッチ更新機能を利用してデータを更新するプログラム例について説明します。

以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“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();
        }
    }
}