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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 230 231 232 233 234 235 < 236 > 237 238 239 240 241 242 .. 260 >> Следующая

548
Часть Создание эффективных приложений с использованием ADO.NET
равления DataGrid нужные значения для создания ссылок на другие страницы набора результатов.
Visual Basic .NET
gridResults.AUowPaging = True gridResults.AllowCustomPaging = True gridResults.CurrentPagelndex = 0
gridResults.PageSize = 10
=
gridResults.PagerStyle.Position = PagerPosition.TopAndBottom Dim strConn, strSQL As String
strConn = "Provider=SQLOLEDB;Data Source=(local)\NetSDK; " &
"Initial Catalog=Northwind;Trusted_Connection=Yes;" Dim cnKorthwiiic As New OleDbConnection(strConn)
StrSQL = "SELECT COUNT(CustomerlD) FROM Customers"
Dim emdFetchflowCount As New 01eDbCommand(strSQL, cnNorthwind)
strSQL = "SELECT TOP 10 CustomerlD, CompanyName, ContactName, Country " & _
"FROM Customers" Dim cmdFetchOnePage As New OleDbComnandCstrSOL, cnNorthwind)
¦cnNorthwind. 0pen()
=
Dim rdrOnePage As OleDbDataReader = cmdFetchOnePage. ExecuteReaderQ gridResults.DataSource = rdrOnePage gridResults.DataBind() rdrOnePage. CloseO cnNorthwind. CloseO
Visual C# .NET gridResults.AllowPaging = true;
gridResults.AllowCustomPaging = true;
gridResults.CurrentPagelndex = 0; gridResults.PageSize = 10;
gridResults.PagerStyle.Mode = PagerMode.NumericPages;
=
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;" + "Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cnNorthwind = new OleDbConnection(strConn); strSQL = "SELECT COUNT(CustomerlD) FROM Customers"; OleDbCommand cmdFetchRowCount = new 01eDbCommand(strS0L, cnNorthwind); istrSQL = "SELECT TOP 10 CustomerlD, CompanyName, ContactName, Country " + "FROM Customers11 ;
OleDbCommand cmdFetchOnePage = new OleDbCommand(strSQL, cnNorthwind),!
cnNorthwind.0pen(); gridResults. Vi rtual.l temCount =
Convert.ToInt32(cmdFetchRowCount.ExecuteScalarO);
ГЛАВА 14 Создание эффективных Web-приложений 549
OleObDataReader rdrOnePage = ¦ );
gridfiesults.DataSource = rdrOnePage;
grldResults. DataBindO;
rdrOnePage.CloseO;
¦cnNorthwind.CloseO;
Использованный в данном примере запрос очень прост — он с помощью раздела ТОР выбирает только первые 10 записей, возвращаемых запросом. Такой синтаксис удобен, когда требуется получить лишь первую страницу данных. Но как же получить содержимое других страниц набора результатов?
Средства постраничного представления информации, предоставляемые методом Fill объекта DataAdapter
Как вы помните из главы 5, метод Fill объекта Dati^-daptei перегружен и одна из его сигнатур позволяет получить часть набора результатов, возвращаемого объектом Dn/aAdapter Второй параметр этой сигнатуры определяет число записей, пропускаемых перед началом выборки данных, а третий параметр — максимальное число
выбираемых записей.
Скажем, вам требуется выводить 10 записей на странице. Тогда для вывода записей пятой страницы нужно пропустить первые 40 записей и выбрать следующие 10. Приведенный ниже фрагмент кода помещает в объект DataSet только записи пятой страницы:
Visual Basic NET
Dim ыгСолп, strSQL As String
strConn = "Provider=SQL0LEDB;Data Source=(local)\NetSuK;" & _ "Initial Catalog=Northwtnd;Trirsted_Connection=Yes;" .strSQL = "SELECT CustomerlD, CompanyName, ContactName, Country " & _
"FROM Customers" Dim da As New 01eDbDataAdapter(strSQL, strConn) Dim ds As New DataSet() da.Fill(ds, 40, 10, "Customers")
Visual C# NET
string strConn, strSQL;
strConn = "Provider=SQL0LEDB;Data Source=(local)\\NetSDK;" ¦*
"Initial Catalog=Northwind;Trusted_Connection=Yes;"; strSQL = "SELECT CustomerlD, CompanyName, ContactName, Country " +
"FROM Customers"; OleDbDataAdapter da = new 01eDbDataAdapter(strSQL, strConn); DataSet ds = new DataSetO; da.Fill(ds, 40, 10, "Customers");
Этот фрагмент очень прост, но сам подход к решению проблемы имеет a ia-чительный недостаток. В этом примере БД все равно возвращает данные всех
записей таблицы. По-прежнему имеется объективное падение производительности, связанное с выборкой 40 записей, которые объект DataAdapter просто отбрасывает и не помещает в объект DataSet.
550
Часть Создание эффективных приложений с использованием ADO NET
Создание запросов, возвращающих страницу данных
БД SQL Server и Access позволяют использовать в запросах раздел ТОР, с помощью которого удается возвращать только лериые и записей. Так, следующий запрос возвращает первые 10 записей таблицы Customers, упорядочивая их по столбцам Country и CustomerlD:
SELECT TOP 10 CustomerlD, CompanyName. ContactName. Country FROM Customers
ORDER BY Country, CustomerlD
Если необходимо разбить результаты запроса на страницы, стоит воспользоваться этим синтаксисом и вернуть только записи для конкретной страницы. Например, для вывода пятой страницы результатов нужно получить оо записи таблицы Customers.
SELECT TOP 10 CustomerlD, Ccnipanyitame, ContactName, Country FROM Customers WHERE CustomerlD NOT IN
(SELECT TOP 40 CustomerlD FROM Customers ORDER BY Country, CustomerlD) ORDER BY Country, CustomerlD
Здесь используется подзапрос, выбирающий первые 40 записей и упорядочивающий их по столбцам Country и CustomerlD. Затем родительский запрос выбл-рает первые 10 записей, не входящие в набор подзапроса, и опять же
Предыдущая << 1 .. 230 231 232 233 234 235 < 236 > 237 238 239 240 241 242 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100