Я пытался понять это весь день и просто не мог найти свою ошибку. У меня есть база данных ms-access и программа на c #, которая должна обновлять данные в БД. К сожалению, я продолжаю получать System.Data.OleDb.OleDbException: Syntaxerror in update statement
.
Я использую OleDbConnection
и OleDbDataAdapter
, и все (кроме одного столбца) работает отлично. Я не мог понять, почему я продолжал получать вышеупомянутую ошибку для этого столбца (он был отформатирован так же, как другие -> текст), поэтому я удалил столбец и создал его снова. Теперь я получаю ошибку за каждое изменение, которое я пытаюсь сделать.
public void changeFields(string id, string name, string famName, string department) {
DataSet myDS = new DataSet();
using (OleDbConnection conn = new OleDbConnection(connectionString)) {
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("SELECT * FROM Table WHERE ID = '"+ id +"', conn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
myDS.Tables["Table"].Rows[0]["Name"] = name;
myDS.Tables["Table"].Rows[0]["FamilyName"] = famName;
myDS.Tables["Table"].Rows[0]["Department"] = department;
adapter.Update(myDS, "Table");
conn.Close();
}
}
Имена столбцов правильные, и если я
Console.WriteLine(myDS.Tables["Table"].Rows[0]["Name"];
прямо перед попыткой обновления.
Я на самом деле получаю правильно измененную версию. Ошибка всегда возникает для строки adapter.Update();
Возможно ли, что доступ переставляет или портит некоторый индекс, когда я вставляю столбец в базу данных?
Помощь будет очень признателен