Передача изменений обратно в базу данных
После того, как мы изменили данные в DataSet, их необходимо передать обратно в базу. Для этого у объекта OleDbDataAdapter есть метод Update(). Прежде чем его использовать, необходимо настроить наш адаптер. В этом нам поможет класс OleDbCommandBuilder. Он позволяет сгенерировать команды для операций вставки, обновления и удаления, а так же создать соответствующую коллекцию параметров команд. Ниже приведен пример передачи изменений из DataSet в базу данных:
public void UpdateDataSet() { DataSet ds = new DataSet(); DataTable tbl = ds.Tables.Add("EMPLOYEE");
OleDbConnection con = ConnectionProvider.CreateConnection(); con.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("select * from EMPLOYEE", con); adapter.SelectCommand.Transaction = con.BeginTransaction(); adapter.Fill(tbl);
//вносим изменения в DataSet
foreach (DataRow row in tbl.Rows) row["FIRST_NAME"] = row["FIRST_NAME"].ToString().ToUpper();
//генерируем команды для операций update, insert и delete OleDbCommandBuilder cmd_builder = new OleDbCommandBuilder(adapter); adapter.DeleteCommand = cmd_builder.GetDeleteCommand(); adapter.UpdateCommand = cmd_builder.GetUpdateCommand(); adapter.InsertCommand = cmd_builder.GetInsertCommand();
//обновление данных
adapter.Update(tbl);
//откат сделанных изменений
adapter.SelectCommand.Transaction.Rollback(); con.Close(); }