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

 

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

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

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

strSQL = "CREATE PROCEDURE spInsertDetail \nvr" +
OOrderlD int, ©ProductID int, \n\r" +
)
}
ГЛАВА Передача обновлений базу данных 373
©Quantity smallint, ©UnitPrice money) \n\r" + "AS \n\r" +
"INSERT INTO [Order Details] \n\r" +
(OrderlD, ProductID, Quantity, UnitPrice) \n\r" + VALUES (©OrderlD, ©ProductID, ©Quantity, ©UnitPrice)";
mi. ComnandText = strSQL;
cmd.ExecuteNonQuery();
strSQL = "CREATE PROCEDURE spDeleteDetail \n\:
(©OrderlD int, ©ProductID int, \n\r" + ©Quantity smallint, ©UnitPrice money) \n\r" + "AS \n\r" +
"DELETE FROM [Order Details] \n\r" +
WHERE OrderlD = ©OrderlD AND \n\r" +
ProductID = ©ProductID AND \n\r" + Quantity = ©Quantity AND UnitPrice = ©UnitPrice" cmd.CommandText = strSOL; cmd. ExecuteNonQueryQ;
Использование собственной логики обновления
Рассмотрим преимущества и недостатки применения еобстьенжн; логики обновления в коде.
Преимущества
Два важнейших преимущества использования собственной логики обновления в
коде — расширенные возможности управления и производительность. По сравнению с предыдущими технологиями доступа к данным Microsoft, объект Data-Adapter ADn.Ni:'Г предоставляет самые широкие возможности управления. Исчезло требование передавать обновления непосредственно в таблицы; наконец-то стало возможно быстро и эффективно использовать хранимые процедуры.
Кроме поскольку вы не определяете происхождение данных с помощью технологии доступа к можно что любой набор результатов под-
держивает обновление. Когда ядро курсоров ADO не умело собрать метаданные, необходимые для передачи изменений в БД, предоставить такие данные программно было нельзя. В ADO.NET объект (><и</V/ разрешается заполнять результатами вызова хранимой процедуры, запроса к временной таблицы, сводными результатами множества запросов или любым другим удобным для вас способом, и вы все равно сможете передать изменения в БД.
Предоставление логики обновления в коде повышает производительность приложения. Во фрагменте кода, передававшем обновления в БД с помощью курсоров ADO, меньше строк, однако ядру приходилось получать из БД имя исходной таблицы, исходных столбцов, а также сведения о первичном ключе исходной таблицы. На получение метаданных из системных таблиц БД и генера цию логики обновления на их основе требуется больше времени, чем на загрузку таких данных из локального кода.
374
Часть III Автономная работа с данными: объект DataSet модели ado.net
Недостатки
Недостатки использования c4v nie: i м< in логики обновления в коде — зеркальное отражение преимуществ ядра 1С\пс<дк>ь ADO. в.ык-рных, собственная логика обновления ::а ним.к-f больше места. bcpiunrtc назад и ш hj.mi ¦: рн i е. сколько кода требуется для передачи обновлений с использованием объекта DataAdapter ADO.NET и сколько — для передачи с так сиз* лишнем ядра курсоров ADO. Написание такого кода — много
Еще один недостаток в том, что при создании собственной логики обновления многие разработчики ч\ах.л ism"-! i ебм неуверенно. Им хотелось бы не задавать вопросов типа «Нужно ли взять имя таблицы в запросе в символы-раздели-и- шч «Какие маркеры параметров .нш ьч ¦ Какие столбцы использовать
в разделе WHERE запросов UPDATE и DELETE?*, «Каково наиболее подходящее значение свойства для параметра, содержащего значение
К счастью, если более быстрые способы создания логики обновления. Подробнее о них — далее в этой главе.
Создание логики обновления
с помощью объекта CommandBuilder
Объектная модель ADO.NET позволяет вам не только определить собственную логику но и предоставляет средства динамической генерации такой
логики с использованием объекта по аналогии с ядром курсо-
ров ADO. Если создать экземпляр CommandBuilder и сопоставить его с DataAdapter, CommandBuilder попытается сгенерировать логику обновления на основе запроса, хранящегося в свойстве SelectCommand объекта DataAdapter.
Чтобы продемонстрировать принципы работы объекта CommandBuilder, я с его помощью сгенерирую логику обновления для кода, выполняющего запросы к таблице Order Details. Следующий фрагмент создает экземпляр объекта OleDbCom-»laiidBai/dcr передавая в конструкторе объект OleDbDatsAdupl?" Затем он выводит запрос, хранящийся в свойстве hiseitCommandn сгенерированный объектом
CommandBuilder для передачи новых записей.
Visual Basic .NET
Dim strConn, strSOi. As String
istrConn = "Provider=SQLOLEDB;Data Source=(local)\NetSDK;" & _ "Initial Catalog=Northwind;Trusted^Connection=Yes;"
strSQL = "SELECT OrderlD. ProductlD, Quantity, UnitPrice " & _
"FROM [Order Details] WHERE OrderlD = 10503 " 1 _
"ORDER BY ProductlD" IDim da As New 01eDbDataAdapter(strSOL, strConn) Dim cb As New OleDbCommandBuilder(da) Console.WriteLine(cb.GetInsertCommand.CommandText)
Visual C# .NET
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(looal)\\NetSDK;" + "Initial Catalog=Northwind;Trusted_Connection=Yes;
ГЛАВА 10 Передача обновлений в базу данных 375
strSOL - "SELECT OrderlD, ProductID, Quantity. UnitPrics " +
"FROM [Order Details] WHERE OrderlD = 10503 " +
Предыдущая << 1 .. 157 158 159 160 161 162 < 163 > 164 165 166 167 168 169 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100