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(); } } } } |