JDBC Sample


Sample
import java.lang.*;
import java.sql.*;
import java.util.*;
import java.text.*;
import java.math.*;
class DBSample {
private static final String STR_DRIVER= "COM.ibm.db2.jdbc.app.DB2Driver";
private static final String STR_URL= "jdbc:db2:XXDB";
private static final String STR_USERID= "db2admin";
private static final String STR_PASSWORD= "db2admin";

private static final String SQL1 = "SELECT TBLCD,COUNT FROM XX.XXZ000T WHERE TBLID=?";
private static final String SQL2 = "INSERT INTO XX.XXZ000T(TBLCD,COUNT,CREUSR,CRETRM) VALUES(?,?,?,?)"; 
private static final String SQL3 = "UPDATE XX.XXZ000T SET TBLID=?,UPDUSR=?,UPDTRM=?,UPDTMS=? WHERE TBLID=?";

    /**
    * DBSample コンストラクター・コメント。
    */
    public DBSample() {
        super();
    }
    public static void main(String args[]) {
        SimpleDateFormat formatter = new SimpleDateFormat ("yyyyMMddHHmmss");
        java.util.Date currenttime = new java.util.Date();
        java.sql.Timestamp timestampvalue = new java.sql.Timestamp(currenttime.getTime());
        //DB関連
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs_u001 = null;
        ResultSet rs = null;

        try { 
            // JDBCドライバー登録
            Class.forName(STR_DRIVER);
            // データベースへの接続
            con = DriverManager.getConnection(STR_URL,STR_USERID,STR_PASSWORD);

            //自動コミットモードをfalseにセット
            con.setAutoCommit(false);

            //PreparedStatementの作成
            pstmt = con.prepareStatement(SQL1);
            pstmt.setString(1,"XXXX");
            //問合せの実行
            rs_u001 = pstmt.executeQuery();
            //汎用DB 結果の表示
            while (rs_u001.next()) {
                currenttime = new java.util.Date();
                String stdate = formatter.format(currenttime).substring(0,8);
                String sttime = formatter.format(currenttime).substring(8,14);
                //PreparedStatementの作成
                pstmt = con.prepareStatement(SQL2);
                pstmt.setString(1,rs_u001.getString("TBLID").trim());
                pstmt.setBigDecimal(intpstmt,new BigDecimal(rs_u001.getString("COUNT"));
                pstmt.setString(2,"batch");
                pstmt.setString(3,"test");
                pstmt.setString(4,"batch");
                //ステータスDB 追加の実行
                pstmt.executeUpdate();
                //コミットする
                try {
                    con.commit();
                } catch (SQLException ex1) {
                    try {
                    //コミット失敗時にはロールバックを行う
                        con.rollback();
                    } catch (SQLException ex2) {
                        ex2.printStackTrace();
                    }
                }
                currenttime = new java.util.Date();
                timestampvalue = new java.sql.Timestamp(currenttime.getTime()); 
                //PreparedStatementの作成
                pstmt = con.prepareStatement(SQL3);
                pstmt.setString(1,"XXXX");
                pstmt.setString(2,"test");
                pstmt.setString(3,"batch");
                pstmt.setTimestamp(4,timestampvalue);
                pstmt.setString(5,"XXX");
                //更新の実行
                pstmt.executeUpdate();
            }
            //コミットする
            try {
                con.commit();
            } catch (SQLException ex1) {
                try {
                    //コミット失敗時にはロールバックを行う
                    con.rollback();
                } catch (SQLException ex2) {
                    ex2.printStackTrace();
                }
            }
        } catch(ClassNotFoundException e) {
            System.err.println(e);
        } catch(SQLException e) {
            while (e != null) {
                System.err.println(e.getMessage());
                e = e.getNextException();
            } 
            try {
                con.rollback();
            } catch (SQLException ex2) {
                ex2.printStackTrace();
            }
        } catch(Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            try {
                con.rollback();
            } catch (SQLException ex2) {
                ex2.printStackTrace();
            }
        } finally {
            try {
                //データベースのクローズ/リソースの開放
                if (rs_u001 != null) {
                    rs_u001.close();
                } 
                if (rs != null) {
                    rs.close();
                } 
                if (pstmt != null) {
                    pstmt.close();
                } 
                if (con != null) {
                    con.close();
                } 
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } 
    }
}