• 締切済み

C#でDBにデータを送るプログラムが上手くいかない。

C#でCSVデータを読み込んでから、PowerGres5のPgAdminに挿入する(Insert into ***)プログラムを作成しています。 SQLコードも接続設定も全てXMLから取り込んで処理しているのですが、なぜかSQLコードの実行でエラーが発生して、例外処理に飛びます。 デバックしてSQLコードを取り出して直接実行すると成功するので、処理の段階で弾かれているのではないのかと予想はできるのですが、対処方法がわかりません。 ちなみにデータを呼び出すことは上手くいきます。 わかる方がおられましたら助言をお願いします。 問題のソースコード↓ StreamReader sr = new StreamReader(ul_address, Encoding.Default); /* ファイルの読み込み */ int k = 0; while(sr.Peek() > -1) { string txt = sr.ReadLine(); /* 一行分のデータを代入 */ if (Regex.Match(txt, "','").Success == false) { /* 文字列内の','を検索。偽の場合、各項目を''で括る処理を行う */ string cut = ","; string[] temp; temp = Microsoft.VisualBasic.Strings.Split(txt, cut, -1, Microsoft.VisualBasic.CompareMethod.Binary); /* ,で文字列を項目ごとに区切って、それぞれを配列へ代入 */ int temp_num = temp.Length; /* 要素数 */ for (int j = 0; j < 100; j++) { if (j == temp_num) break; /* 要素数に到達=nullなので、for分を抜ける */ temp_data[j] = "'" + temp[j] + "'"; /* ''で括る処理 */ } for (int j = 0; j < temp_num; j++) { if (j == 0) txt = temp_data[j]; else txt += "," + temp_data[j]; /* 分離した項目を、,で区切りながら文字列に戻す */ } } dl_data[k] = txt; /* 文字列を配列に代入 */ k++; } //Read_db(); NpgsqlConnection conn = new NpgsqlConnection(connectionString); /* 接続設定 */ try /* DB接続 */ { conn.Open(); } catch { string res = "接続エラー[各設定を確認してください]"; get_bad(res); /* 結果を返す */ return; } int x = 0; /* 添え字変数 */ st: /* 戻り地点 */ NpgsqlCommand command = new NpgsqlCommand(UlorderSt + dl_data[x] + UlorderEn, conn); Int32 rowsaffected; try /* SQLコードの実行 */ { rowsaffected = command.ExecuteNonQuery(); /* SQLコードの読込&実行 */ x++; if (x < k) goto st; /* nullになるまで繰り返す */ conn.Close(); /* 接続を閉じる */ string res2 = "データ送信完了"; get_ok(res2, k); /* 結果を返す */ } catch { string res = "データ送信エラー[SQLコードを確認してください]"; get_bad(res); /* 結果を返す */ }

みんなの回答

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

ソースが分かりにくいのでほとんど読んでません。 開発環境は何か知りませんが、ブレークポイント貼って追ってみましたか? 例外内容が書かれてませんが catch ( Exception ex ) くらい入れてDiscriptionくらい見たらどうでしょうか。 ざっと見た感じ、接続してクエリ発行するまでの間にトランザクション系の処理が一切されてませんが、その辺は大丈夫なんでしょうか。

garnet20
質問者

お礼

説明不足で申し訳ありません。 ブレークポイントは見ておりましたが、例外処理が拾えていませんでした。それを見たところ、原因がはっきりとわかり、どうにか自己解決することができました。 あとトランザクション処理は追加しました。 いろいろとありがとうございます。

関連するQ&A