"1つ以上の必須パラメータに値が指定されていません"というエラーが表示されます。以下のコードのExceuteNonQuery()行。Excelでカラムを更新するときにOledb例外を取得する
System.Data.OleDb.OleDbConnection finalConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
finalConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source ='c:\\temp\\test.xlsx'; Extended Properties ='Excel 12.0 Xml;HDR=NO';");
finalConnection.Open();
myCommand.Connection = finalConnection;
foreach (VinObject v in VinList)
{
sql = "Update [Sheet1$] set O = ? where S = ?;";
myCommand.Parameters.Add(new OleDbParameter("@amt", v.CostNewAmt));
myCommand.Parameters.Add(new OleDbParameter("@vin", v.VIN));
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
}
finalConnection.Close();
また、同じエラーが発生するたびに別のコマンドを使用してみました。
foreach (VinObject v in VinList)
{
using (OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source ='c:\\temp\\test.xlsx'; Extended Properties ='Excel 12.0 Xml;HDR=No';"))
{
con.Open();
string query = @"UPDATE [Sheet1$] SET O = ? WHERE S = ?";
OleDbCommand cmd = new OleDbCommand(query, con);
cmd.Parameters.AddWithValue("@param1", v.CostNewAmt);
cmd.Parameters.AddWithValue("@param2", v.VIN);
cmd.ExecuteNonQuery();
con.Close();
}
}
私はINSERT INTOことを変更し、新しいExcelスプレッドシートに挿入することですが、私の人生は、このアップデートは仕事を得ることができないため。私が間違って何をしているのか?助けてくれてありがとう。
あなたは、個々の文のための新しいコマンドを必要としませんか?または少なくとも、Parametersコレクションをリセットしますか? –
ヒント:foreach内の 'sql'の値は何ですか?これは有効なクエリのようですか? –
@ValAkkapeddiそれは最初の1つを爆撃し、質問は悲しいことに私のエラーを修正しなかったその点 –