Я получаю следующую ошибку «Не задано значение для одного или нескольких обязательных параметров». В строке ExceuteNonQuery () приведенного ниже кода.
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();
}
}
Я могу изменить это в виде вставки и вставить в новую электронную таблицу Excel, но я не могу заставить это обновление работать. Есть идеи, что я делаю не так? Спасибо за помощь.