Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 157

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 151 152 153 154 155 156 < 157 > 158 159 160 161 162 163 .. 260 >> Следующая

Вызвав метод Eyx-ci;ieNo:--Qi;e-'i для выполнения запроса, хранящегося в объекте Command, воспользуемся возвращаемым значением метода и определим, успешно ли прошло обновление. В случае успеха можно вызвать метод Cbmgss, В противном случае — задать соответствующее значение свойству Rx,w?ns>r объекта DataRow. сообщив тем самым об ошибке обновления.
Visual Basic .NET
Private Sub SubmitChangesByHandO
Dim cmdUpdate As QleDbCominand = CreateUpdateCommandO Dim cmdlnsert As OleDbCommand = CreateInsertCoimnand()
Dim cmdDelete As OleDbCommand = CreateDeleteCommand()
Dim row As DataRow
Dim intRowsAffected As Integer
Dim dvrs As DataViewRowState
dvrs = DataViewRowState.ModifiedCurrent _
Or DataViewRowState.Deleted Or DataViewRowState.Added For Each row In tbl. Select(,,M, ,,M, dvrs) Select Case row.RowState
Case DataRowState.Modified
intRowsAffected = SubmitUpdate{ row, cmdUpdate)) Case DataRowState.Added
intRowsAffected = Submitlnsert<row, cmdlnsert) Case DataRowState.Deleted
intRowsAffected = SubmitDelete(row, cmdDelete) End Select
If intRowsAffected = 1 Then row. AcceptChanges()
Else
row.RowError = "Update attempt failed" End If Next row End Sub
Private SubmitUpdate(ByVal row As Dataflow, _
ByVal cmd As OleDbCommand) As Integer IDim pc As OleDbParameterCollection = cmd.Parameters pc(-Oiderli). New"). Value = row("OrderID") pc( "ProductID_New"). Value = row("ProducrlD"") pc("Quantity_New").Value = row("Quantity") pc("UnitPrlce_New").Value = row("UnitPrice") pc{"OrderID_0rig").Value = row("0rderID", _
DataRowVersion.Original) pc("Quantity_0rig").Value = row("Quantity", _
DataRowVersion.Original)
356 Часть III Автономная работа с данными: объект DataSet модели ADO.NET
pc("ProductID_Orig").Value = row("ProductID", _
DataRowVe rslon.Original)
pcCUnitPrice_Orig"). Value = row("UnltPr1 oe",
DataRowVersion.Original)
Return ma Exaeut.eNonGucry End Function
Private Function SubmitInsert(eyVal row As DataRow,
ByVal cmd As OleDbCommand) As Integer Dim pc As OleDbParameterCollection = cmd.Parameters pc("OrderlD").Value = row("OrderID") pcC'ProductlD").Value = rowj"ProductID") pe("Quantity").Value = row{"Quantity") pc("UnitPrice").Value = row{"UnitPrice") Return ctnd.ExecuteNonQuery
End Function
Private Function SubmitDelete(ByVal row As DataRow,
ByVal cmd As OleDbCommand) As Integer Dim pc As OleDbParameterCollection = cmd.Parameters pc("OrderlD").Value = row("OrderIO", DataRowVersion.Original) pc( "ProductID").Value = row("ProduotID". DataRowVersion,Original) pcC Quantity ').value = row("Quantity". DataRowVersion,Original) pc("UnitPrice").Value = rowC'UnitPrice", DataRowVersion.Original) Return cmd.ExecuteNonQuery
End Function
Visual C# NET
static void SubmitChsngesSyHandO
I
OleDbCommand cmdUpdate = CreateUpdateCommandO; OleDbCommand cmdlnsert = CreatelnsertCoinmandO; OleDbCommand cmdDelete = CreateDeleteCommandQ; DataViewRowState dvrs; dvrs = DataViewRowState.ModtfiedCurrent
DataViewRowState.Deleted I DataViewRowState.Added; int intRowsAffected = 0;
foreach (DataRow in tbl.Select("", "", dvrs))
{
switch (row.RowState)
3
case
intRowsAffected = SubmitUpdate(row, cmdUpdate); break;
case
intRowsAffected = SubmitlnsertCrow, cmdlnsert); break;
case
intRowsAffected = SubmitDelete(row, cmdDelete);
ГЛАВА Передача обновлений в базу данных 357
break;
}
if (intRowsAffected == 1) row.AcceptChangesO;
else
••w.HowError = "Update attempt failed";
static int SubmitUpdaie(DataRow row, OlnDbComroano cmd) {
QieDoParameterCollacticn pc = cmd. Parameters; pc[' OrderlOJIew" ]. Value = rowfOrderlD"]; pc[ "ProductTDJlew"], Value = ro*["ProductID"1; pc["Quantity_New"]. Value = row["Ouantity"]; pc["UnitPrice_New"]. Value = row["LlnitPrlce"]; pc["0rderID_0rig"], Value = row["OrderID",
DataRowVe rsion.Original]; pcl'"PrCNJuc1IO_0rig";. Value = row["ProductID",
DataRowVersion.Original]; pc["Quantity_Orig"]. Value = row["Quantity",
DataRowVersion.Original]; pc["UnitPrice_Orig"]. Value = row["UnitPrice",
DataRowVersion.Original];
return cnd.ExecuteNonOuery(>;
}
static int SubmitInsert(DataRow OleDbCommand {
OleDbParameterCollection pc = cmd. Parameters; pcf'OrderlD"]. Value = row["OrderID"]; pc["PfodoctID"] Value = rcw["Product ID']: pcfQuantity"]. Value = rowf"Quantity"]; pc["lnitPrice"]. Value = row["UnitPrice"]; return cmd. ExecuteNonQueryO;
}
static int SubmitDeletef Dataflow row, OleDbCommand cmd) {
OleDbParameterCollection pc = cmd. Parameters;
pc["GrdsrID"], Value = row["OrderID", DataRowVe rsion. Original!.;
pc["ProductID"]. VaJua = row["ProductlD",
DataRowVersion. Original]; pcrQuarttity"). Value = row[ "Quantity", DataRowVersion. Original]: pc["lnitPrice"]. Value = row["UnitPrice",
DataRowVersion,Original]; return cmd. ExecuteNonQueryO;
}
358
Часть Автономная работа с данными: объект DataSet модели ADO NET
Примечание Предыдущий . чес i кода просматривает измененные записи с помощью метода У меня была очень веская причина
не использовать циклы For или For Each для просмотра всех элементов набора Rott'S объекта DataTable. После того как вы успешно передали отложенное удаление и вызвали соответствующего
Предыдущая << 1 .. 151 152 153 154 155 156 < 157 > 158 159 160 161 162 163 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100