- ★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net
393 :デフォルトの名無しさん[sage]:2016/08/06(土) 01:25:18.48 ID:FfBiCVo4 - csvファイルを読みこみ、PreparedStatementを使ってDBにどんどん
insertしていってるんですが、流すたびにinsertできている件数が 違います。 全5000件のうち、1度目は300件だったり、2回目は1000件だったり、あるいは 逆だったり、、、 とにかく流すたびにinsertできる件数が違っていて規則性がないんですが、 何が原因なんでしょうか。 プログラム誤りであれば、毎回同じ件数になると思うのですが、、、
|
- ★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net
395 :デフォルトの名無しさん[sage]:2016/08/06(土) 02:10:07.11 ID:FfBiCVo4 - >>394
まさかこんな時間に返信もらえるとは思ってませんでした。 Statementで更新していた時は全件INSERTできたんですが、PreparedStatementに 変更したら、>>393の状態となってしまいました。DBはACCESSです。 コードはこんな感じです。
|
- ★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net
396 :デフォルトの名無しさん[sage]:2016/08/06(土) 02:13:17.61 ID:FfBiCVo4 - private void insert_task(String table, BufferedReader br) {
Connection con = null; PreparedStatement pstmt_ins = null; PreparedStatement pstmt_del = null; PreparedStatement pstmt_upd = null; try { //JDBCドライバのロード //各設定 String url = "jdbc:odbc:kinmu"; String user = ""; String pass = ""; //データベースに接続 con = DriverManager.getConnection(url, user, pass); String line = ""; //一行ずつ読み込む int line_count = 1; //ヘッダーフラグ boolean delete_flg = true; //ヘッダーフラグ String sql_ins = "INSERT into KINMU values(?,?,?,?,?)"; pstmt_ins = con.prepareStatement(sql_ins); while ((line = br.readLine()) != null) { String[] strAry = line.split(",", 11); pstmt_ins.setString(1, strAry[0]); pstmt_ins.setString(2, strAry[1]); pstmt_ins.setString(3, strAry[2]); pstmt_ins.setString(4, strAry[3]); pstmt_ins.setString(5, strAry[4]); pstmt_ins.executeUpdate(); } } catch (IOException exception) {
|
- ★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net
397 :デフォルトの名無しさん[sage]:2016/08/06(土) 02:15:37.25 ID:FfBiCVo4 - PreparedStatement pstmt_upd = null;
PreparedStatement pstmt_del = null; について、実際はpstmt_upd、pstmt_delを用いて try{}の中でdelete,update処理を行っていますが、 正常に処理できているのでコードを割愛させていただきました。
|
- ★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net
401 :デフォルトの名無しさん[sage]:2016/08/06(土) 08:11:45.63 ID:FfBiCVo4 - 朝早くからこんなにお返事ありがとうございます。
>>398 Insertがされているデータは、すべての列が正確に登録されています。 >>399、400 諸事情があり、プライマリーキーは設定しておりません。 また、全4列において、すべてテキストタイプです。 朝、PCを立ち上げ直し、2回ほど処理を回してみましたが、 1回目は538件で、2回目は990件でした。 規則性がかけらもない_| ̄|○
|
- ★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net
405 :デフォルトの名無しさん[sage]:2016/08/06(土) 09:33:59.56 ID:FfBiCVo4 - >>395です。
お返事ありがとうございます。 なんかPCを再起動してやってみたら、コードは一つも直していないのに、全件入るようになりました_| ̄|○ しかも何回やっても全部入るみたいです。 >>402 確認したのですが1回目と2回目の差分は何の変哲もないデータで、Insertされているデータと比べ変なところはありませんでした。 また、1回目2回目共に同じデータです。 データベース側のログ、確認してみます! >>403 件数はACCESSにて全体件数が自動表示されますので、それで確認しています。 スクロールしても、やはりその件数までしかレコードが表示されていないことも確認しています。 >>404 deleteとupdateはこんな感じです。 String sql_del = "delete from KINMU where プロジェクトcd = ?"; pstmt_del = con.prepareStatement(sql_del); String sql_upd = "UPDATE LASTUPDATE SET 最終更新日時 = ? where プロジェクトcd = ?"; pstmt_upd = con.prepareStatement(sql_upd); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒"); String last_update = sdf.format(date); pstmt_del.setString(1, strAry[0]); pstmt_del.executeUpdate(); pstmt_upd.setString(1, last_update); pstmt_upd.setString(2, strAry[0]); pstmt_upd.executeUpdate();
|