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

 

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

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

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

логика обновления, генерируемая ядром ADO, вы полностью
доставлены сами себе.
352
Часть Ж Л/полсвдая работа с данными: объект DataSet модели ADO.NET
Передача обновлений с помощью объектов Command модели ADO.NET
Как вы уже mi;jciл, ядро ADO создает для передачи обновлений в БД
параметризованные запросы. Используя материал главы 4, можно создавать эквивалентные параметризованные запросы на Л1 о. !"i В следующих раздс.:их главы рассказывается, как с помощью этих параметризованных объектов Command передавать в БД изменения из объектоь Dato5efADO.NET.
Наши объекты Command ADO.NET будут не столь динамическими, как их ADO-аналоги. Чтобы упростить задачу, создадим один объект ( ттпппЫл^' обработки обновлений, один — для вставок и один — для удалений. Они основаны на следующих параметризованных запросах:
UPDATE [Order Details]
SET OrderlD = ?, ProductlD = ?, Quantity = ?, UnitPhce = ? WHERE OrderlD = ? AND ProductID = ? AND ¦Quantity = ? AND UnitPrice = ?
INSERT INTO [Order Details J (OrderlD, ProductID, Quantity, UnitPrice) VALUES (?. ?, ?, ?)
DELETE FROM [Order Details)
WHERE OrderlD = ? AND ProductID = ? AND Quantity = ? AND UnitPrice = ?
Примечание Запросы UPDATE и INSERT передают в БД новые значения всех полей оригинального запрос д. поскольку те указаны в их разделах WHERE. У данного способа есть как преимущества, так и недостатки, которые мы подробно обсудим позже.
Следующий фрагмент кода создает три параметризованных объекта Command. В каждом случае код предполагает, что имеется внешне определенный объект
CieDbCunsi-ciio'i с именем си.
Visual Basic .NET
Private Function t:reat<->UpdateCoeand() As oleDbCommand Dim strSQL As String
strSQL = "UPDATE [Order Details] " & _
SET OrderlD^ ?, DroductID = ?, " &_ Quantity = ?, UnitDrice = ? " & _ WHERE OrderlD = ? AND ProductID = ? AND Quantity = ? AND UnitPrice = ?"
i
Dim As New
Dim pc As =
pc.Add("OrderID_New", OleDbType.Integer) pc.Add("ProductlO_New", OleDbType.Integer) pc.Add("Quantity_New", OleDbType.Smalllnt)
ГЛАВА 10 Передача обновлений в базу данных 353
pc.Add("UnitPrice_New", OleDbType.Currencyj
pc.Add("0rderID_0rig", OleDbType,Integer) pc.Add("ProductID_Orlg", OleDbType.Integer) pc.Add("Quantity_Orig", OleDbType.Smalllnt) pc.Add{"UnitPrice_0rig", OleDbType.Currency)
Return cmd End Function
Private Function CreatelnsertCormrandO As OleDbCommand Dim strSQL As String
strSQL = "INSERT INTO [Order Details] " & _
(OrderlD, ProductID, Quantity, UnitPrice) " 4 VALUES ?, ?,
pirn cmd As New 01eDbCommand(strSQL, cn)
Dim pc As OleDbParameterCollection =
pc.Add("OrderlD", OleDbType.Integer) pc.Add{"ProductID", OleDbType.Integer) pc.Add("Quantity", OleDbType.Smalllnt) pc.Add("UnitPrice", OleDbType.Currency)
Return cmd End Function
Private Function As OleDbCommand
Dim strSQL As String
strSQL = "DELETE FROM [Order Details] " & _
WHERE OrderlD = ? AND ProductID = ? AND '' & . Quantity = ? AND UnitPrice = ?" Dim cmd As New OleDbCommandCstrSQL, cn)
Dim pc As OleDbParameterCollection =
pc.Add("OrderID", OleDbType.Integer) pc.Add("ProductID", OleDbType.Integer) pc.Add("Quantity", OleDbType.Smalllnt) po. AddC'UnitPrice", OleDbType. Currency)
Return cmd
End Function
Visual C# .NET
static OleDbCommand
string strSQL;
strSQL = "UPDATE [Order Details] " & _
SET OrderlD = ?, ProductID = ?, " +
Quantity = ?, UnitPrice - ? " +
354
Часть III Автономная работа с данными: объект DataSet модели ado.net
WHERE OrderlD = ? AND ProductID = ? AND " +
Quantity = ? AND UnitPrice = ?"; OlePtiCominand cmd = new CleODConnand(strSQL, cn>;
OleDbParameterCollection pc = end Pararstsrs: ipc. Add( "OrderID_New", OleDbType. Integer); pc.Add("ProductID_New", OleDbType.Integer); pc.Add("Quantity_New", OleDbType.Smalllnt); pc.Add("UnitPrice_New", OleDbType.Cu rrency);
pc.Add("OrderID_0rig", OleDbType.Integer); pc.Add("ProductID_Orlg", OleDbType.Integer); pc.Add("Ouantity_Orig", OleDbType.Smalllnt); pc.Add("UnitPrice_Orlg", OleDbType.Currency);
return cmd;
i
static OleDbCommand CraatelnseriComaancfO 1
string strSOL;
strSQL = "INSERT INTO [Order Details] " +¦
(OrderlD, ProductID, Quantity, DnitPrtce) " + VALDES (?, ?, ?, ?)"; OleDbCommand cmd = new 01eDbCommand{strSQL, cn);
OleDbParameterCollection pc = cmd.Parameters; pc,Add("OrderlD", OleDbType.Integer); pc.Add("ProductID", OleDbType.Integer); pc.AddC"Quantity", OleDbType.Smalllnt); pc.Add("UnitPrice", OleDbType.Currency);
return
i
static OleDbCommand I
string strSQL;
.StrSQL = "DELETE FROM [Order Details] " +
WHERE OrderlD = ? AND ProductID = ? AND " + Quantity = ? AND DnitPrice = ?"; OleDbCommand cmd = new 01eDbCommand(strSQL, cn);
OleDbParameterCollection pc = cmd.Parameters; pc.Add("0rderID", OleDbType.Intege r); pc.Add("ProductID", OleDbType.Integer); pc.Add{"Quantity", OleDbType.Smalllnt); pc.Add("UnitPrice", OleDbType.Currency);
return cmd;
Г ПАВА 10 Передача обновлений в базу данных
355
Передавать обновления с помощью наших параметризованных объектов Command очень просто. Для начала просмотрим измененные записи в объекте l.w.u'liihk-и определим, как именно они изменены (обновление, вставка или удаление). Затем на основе содержимого записи подставим значения параметров в соответствующий запрос.
Предыдущая << 1 .. 150 151 152 153 154 155 < 156 > 157 158 159 160 161 162 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100