Ошибка OleDbDataAdapter после изменения в базе данных - PullRequest
0 голосов
/ 07 мая 2019

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

Помощь будет очень признателен

1 Ответ

0 голосов
/ 08 мая 2019

Я понял это!Проблема была в том, что у меня было зарезервированное ключевое слово в качестве имени столбца.Теперь все отлично работает

...