2016-10-14 14 views
0
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=\"C:\\Users\\User\\Desktop\\New Microsoft Access Database.accdb\""); 
       OleDbDataAdapter DataAdapter = new OleDbDataAdapter("SELECT *from pinakas", connection); 

       DataTable pinakas_Table = new DataTable(); 
       DataAdapter.Fill(pinakas_Table); 

       MessageBox.Show(pinakas_Table.Rows[1]["Name"].ToString()); 

ИТАК эта строка отображает название «Джордж» моего 1-го Роу поля «Name».C# OleDB Сохранить изменения

 pinakas_Table.Rows[1]["Name"] = "John"; 

Теперь эта строка задает поле "Имя" значение "John"

 pinakas_Table.AcceptChanges(); 
     DataAdapter.Fill(pinakas_Table); 
     MessageBox.Show(pinakas_Table.Rows[1]["Name"].ToString()); 

ОК теперь мое приложение отображает имя "Джон"! Это означает, что DataTable «pinakas_Table» получил изменение.

 DataAdapter.Update(pinakas_Table); 

Но он никогда не сохраняется в моей базе данных Access.

+0

DataSet ds = new DataSet(); DataAdapter.Fill (ds); MessageBox.Show (ds.Tables [0] .Rows [1] ["Name"]. ToString()); ds.Tables [0] .Rows [1] ["Name"] = "John"; ds.AcceptChanges(); MessageBox.Show (ds.Tables [0] .Rows [1] ["Name"]. ToString()); DataAdapter.Update (ds.Tables [0]); // То же самое, когда я делаю это с DataSet вместо DataTable. Изменения не фиксируют –

ответ

0

Updating Data Sources with DataAdapters состояния ...

Вызывающие AcceptChanges на DataSet, DataTable или DataRow заставит все Original значения для DataRow быть перезаписаны с Current значениями для DataRow. Если значения полей, которые идентифицируют строку как уникальную, были изменены, после вызова AcceptChanges значения Original больше не будут соответствовать значениям в источнике данных. AcceptChanges вызывается автоматически для каждой строки во время вызова метода Update для DataAdapter.

pinakas_Table.AcceptChanges(); Позвонив измененную строку будет рассматриваться, как если бы его данные без изменений из базы данных, так DataAdapter.Update(pinakas_Table); будет видеть никаких действий, необходимых для этой строки. Не звоните AcceptChanges(). Update method вызовет AcceptChanges() для вас после успеха.

+0

Если я не «AcceptChanges», я получаю сообщение об ошибке при обновлении с помощью DataAdapter. –

+0

Какая ошибка? – BACON

+0

{«Обновление требует действительной UpdateCommand при передаче коллекции DataRow с измененными строками».} –