トップページ > プログラム > 2016年08月06日 > FfBiCVo4

書き込み順位&時間帯一覧

4 位/190 ID中時間01234567891011121314151617181920212223Total
書き込み数0130000011000000000000006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net

書き込みレス一覧

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


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。