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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 67 68 69 70 71 72 < 73 > 74 75 76 77 78 79 .. 260 >> Следующая

Вы наверняка просматривали каталоги, в которых на странице
отображается несколько товаров, например, 20 из сотни наименований. DataAdapter предоставляет метод Fill, позволяющий выбрать только часть результатов запроса:
DataAdaoter.FUKDataSet, intStartRecord, ¦-. "ИмяТаблицы")
Помните, что параметр для первой записи — 0. Так, следующий фрагмент кода выбирает первые двадцать записей;
DataAdapter. Fi iKDataSet, 0, 20, "Products")
Важно также помнить, что при использовании данного метода Fill ваются только записи объекта DataSet. Предположим, вы выполняете запрос к таблице с 1000 записями и выбираете данные порциями по 20 записей на страницу. Следующий фрагмент кода
DataAdapter. Fill (DataSet, 980, 20, "Products")
помещает последние 20 записей, возвращенных запросом, в объект DataSet. На самом деле запрос возвращает 100(1 записей. Объект DataAdapter просто отбрасывает первые 49 страниц данных.
хотя данный метод Fill и упрощает разбиение данных на страницы, он не слишком эффективен. Подробнее об эффективных ui более сложных) способах постраничного разбиения данных из объектов DataSet к DataReader - в главе 14, посвященной созданию эффективных Web-приложений.
Заполнение объекта DafaSef содержимым объекта Recordset при помощи объекта DataAdapter
Поставщик данных OLE DB .N."'1 предоставляет два метода Fill, позволяющих копировать данные из объекта Recordset модели ADO в объект DataSet ADO.NET:
144 Часть II Подключаемся: использование поставщика данных NET
OleDbDataAdapter.FiIl(DataSet, AdoRecordset, "TableName")
OleDbDataAdapter. FilKDataTabie. AdoRecordset)
Эти методы полезны, если вы собираетесь использовать в приложении уже написанный код или компоненты, возвращающие объекты Recordset ADO.
Открытие и закрытие соединений
Возможно, предыдущие фрагменты кода, демонстрировавшие использование метода Fill, позволили вам понять основное отличие того, как объекты DataAdapter и Command обрабатывают объекты Connection. В главе 4 перед вызовом одного из методов Execute объекта Command мы открывали связанный с этим объектом объект Connection. В противном случае объект Command генерировал исключение. Объект DataAdapter не предъявляет таких требований.
Если при вызове метода Fill объекта DataAdapteroQbeKT Connection, указанный в свойстве будет закрыт, DataAdapter откроет соединение, выпол-
нит запрос, выберет результаты и затем закроет объект Connection. Можно сказать, что DataAdapter — весьма аккуратный объект. Он всегда возвращает объект Connection, указанный в свойстве SelectCommand, в его исходное состояние. Если вы откроете объект Connection до вызова метода Fill, по завершении вызова соединение останется открытым.
Подход объекта DataAdapter к использованию объектов Connection очень удобен, поскольку вам не требуется открывать соединение. Тем не менее в некоторых случаях нужен явно открывающий соединение.
Предположим, что при запуске приложения вы с помощью нескольких объектов DataAdapter заполняете объект DataSet результатами нескольких запросов. Вы уже знаете, как посредством конструктора заставить объекты DataSet использовать одно соединение, и поэтому код должен выглядеть примерно так:
Basic
Dim strConn As String = "Provider=S0L0lED8; Data Sour<:e=(local)\HetSDK, " &
"Initial Catalog=Northwind;Trusted_Connection=Yes;" Dim cn As New OleDbConnectlon(strConn)
Dim claCustomers, daOrders As OleDbDataAdapter
daCustomers = New OleDbDataAdapterC"SELECT ... FROM Customers", cn) daOrders = New OleDbDataAdapter*"SELECT ... FROM Orders", cn) Dim ds As New DataSet() daCustomers.Fill(ds) daOrders.Fill(ds)
Visual C# .NET
string strConn = "Provider^SOLOLECB;Data Source=<local)\\NetSDK;" +
"Initial Catalog=Northwind;Trusted_Connection=Yes;"; OleDbConnection cn = new OleDbConnection(strConn);
OleDbDataAdapter daCustomers, daOrders;
idaCustomers = new OleDbDataAdapter*"SELECT ... FROM Customers", cn);
daOrders = new OleDbDataAdapterC1 SELECT ... FROM Orders", cn); ds = new DataSetO;
ГЛАВА 5 получена данных с помощью объектов DataAdapter
145
daCustomers.Fill(ds); daOrders. Fill(ds);
На самом деле при каждом вызове метода DaSiL-ic'apterFil вы дважды открываете и закрываете объект Connection. Чтобы избежать этого, перед вызовом метода Fill объектов DataAdapierBU30Bme метод Open объекта Connection. Если по завершении всех операций вставки соединение необходимо закрыть, вызовите метод Call:
en. Ореп()
daCustomers.Fill(ds) daOrders.Fill(ds) on. CloseC)
Многократный вызов метода Fill
Что, если вам требуется обновить данные объекта DataSet? Допустим, при запуске приложения ваш объект DataAdapter выбирает содержимое таблицы и вы хотите реализовать возможность просмотра точных данных на текущий момент времени. Самое простое решение — очистить объект DataSet (или DataTable) и снова вызвать метод Fill объекта DataAdapter.
А вдруг вы не понимаете своего счастья и повторно вызываете метод Fill объекта DataAdapter!
Visual Basic .NET
Dim strConn, strSQL As String
strConn = "Provider=S0L0LEDB;Data Source=<local)\NetSDK;" & "Initial Catalog=Northwind;Trusted_Connectlon=Yes;"
Предыдущая << 1 .. 67 68 69 70 71 72 < 73 > 74 75 76 77 78 79 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100