Сначала я попытался это:не удается ОБНОВИТЬ в файл .mdb с помощью C#
string set = "";
for (int i = 1; i < result.Count; i++)
{
if ((fieldtypes[i] == "System.Int32"))
{
set += fields[i] + "=" + result[i] + ", ";
}
else if (fieldtypes[i] == "System.String")
{
set += fields[i] + "='" + result[i] + "', ";
}
else if (fieldtypes[i] == "System.Boolean")
{
set += fields[i] + "=" + result[i] + ", ";
}
else if (fieldtypes[i] == "System.DateTime")
{
set += fields[i] + "='#" + System.DateTime.Now + "#', ";
}
}
set = set.Substring(0, set.Length - 2);
string sql11 = "UPDATE [Contacts] SET " + set + " WHERE pkContactID=" + cKey;
OleDbCommand myCommand11 = new OleDbCommand(sql11, myConnection);
myCommand11.ExecuteNonQuery();
Теперь это РАБОТАЛ, когда я опустил строки и даты-времени условия, чтобы он только обновили Int и логическое значение. Поэтому это связано с синтаксической ошибкой, когда я пытаюсь обновить поле, где тип является строкой.
Потом я слышал, что вы должны использовать параметры при записи в файл .mdb, поэтому я попытался это:
string sql11 = "UPDATE [Contacts] SET ";
for (int i = 1; i < result.Count; i++)
{
sql11 += fields[i] + " = ?, ";
}
sql11 = sql11.Substring(0, sql11.Length - 2);
sql11 += " WHERE pkContactID = " + cKey;
using (myConnection)
{
using (OleDbCommand myCommand11 = new OleDbCommand(sql11, myConnection))
{
myCommand11.CommandType = CommandType.Text;
for (int j = 1; j < result.Count; j++)
{
if (fieldtypes[j] == "System.Int32")
{
myCommand11.Parameters.AddWithValue(fields[j], int.Parse(result[j]));
}
else if (fieldtypes[j] == "System.String")
{
myCommand11.Parameters.AddWithValue(fields[j], result[j]);
}
else if (fieldtypes[j] == "System.Boolean")
{
myCommand11.Parameters.AddWithValue(fields[j], Boolean.Parse(result[j]));
}
else if (fieldtypes[j] == "System.DateTime")
{
myCommand11.Parameters.AddWithValue(fields[j], DateTime.Now);
}
}
Console.WriteLine(sql11);
myCommand11.ExecuteNonQuery();
}
}
}
Который не работает. Я не думаю, что они заменены должным образом.
В любом случае, пожалуйста, помогите мне исправить это, чтобы я мог правильно обновить.
я не знаю, что вы пытаетесь сделать точно, но прямо сейчас, вы сравниваете каждый J в вашем массиве с String. Независимо от того, что находится между кавычками. – Thousand
Возможный дубликат [Вставка и обновление данных в MDB] (http://stackoverflow.com/questions/8625569/inserting-and-updating-data-to-mdb) –
Значения OleDBParameters следует добавлять в том порядке, в котором они появляются в тексте команды sql – Steve