0
DataTableオブジェクトのコレクションDataRowsを使用してAccessテーブルにデータを追加しようとしていますが、ビューアにはデータセットが豊富ですが、 43回。パラメータを間違って設定しているのですか、間違っていますか?DataTableからOLE型テーブルに追加するC#
private void PopulateDB(DataTable dtDB)
{
lblDataStatus.Text = "populating master table...";
this.Refresh();
progressBar1.Visible = true;
progressBar1.Value = 1;
progressBar1.Maximum = dtDB.Rows.Count;
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\path\fname.accdb";
using (OleDbConnection conn = new OleDbConnection (strConn))
{
using (OleDbCommand cmd = new OleDbCommand())
{
foreach (DataRow dr in dtDB .Rows)
{
progressBar1.PerformStep();
try
{
cmd.CommandText = "INSERT INTO PMADocMaster(PN, PNNewRev, PN8Digit, ECO, Mon, SupNum, URL) VALUES (?,?,?,?,?,?,?)";
cmd.Parameters.Add("@pn", OleDbType.VarChar).Value = dr.Field<string>("PNFullNum");
cmd.Parameters.Add("@rev", OleDbType.VarChar).Value = dr.Field<string>("PNNewRev");
cmd.Parameters.Add("@pn8", OleDbType.VarChar).Value = dr.Field<string>("PN8Dig");
cmd.Parameters.Add("@eco", OleDbType.VarChar).Value = dr.Field<string>("ECO");
cmd.Parameters.Add("@mon", OleDbType.VarChar).Value = dr.Field<string>("Mon");
cmd.Parameters.Add("@supnum", OleDbType.VarChar).Value = dr.Field<string>("SupNum");
cmd.Parameters.Add("@url", OleDbType.VarChar).Value = dr.Field<string>("URL");
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception e)
{
MessageBox.Show("Error: " + e.Message);
lblDataStatus.Text = e.Message;
return;
// duplicates are happening, will check veracity of data afterwards
}
}
progressBar1.Visible = false;
}
}
}
.. cmd.Parameters.clearを(使用)以下のようなコードを最適化することができます。 DBに送信するためにDataTableからデータを引き出すのはむしろ奇妙です – Plutonix