|
Программирование >> Программирование с использованием ajax
using System.Collections .Generic-using System.Text; tendregion 3. Добавьте следующий код в метод Main (): static void Main(string [ ] args) { Указать специфичную для SQL Server строку соединения SqlConnection thisConnection = new SqlConnection( @ Data Source=.\SQLEXPRESS; + @ AttachDbFilename=C:\SQL Server 2000 Sample Databases\NORTHWND.MDF; + Integrated Security=True;Connect Timeout=30;User Instance=true ); Создать объект DataAdapter SqlDataAdapter thisAdapter = new SqlDataAdapter( SELECT CustomerlD, ContactName FROM Customers , thisConnection); Создать DataSet для хранения таблиц данных, строк, и столбцов DataSet thisDataSet = new DataSet (); Заполнить DataSet, используя запрос, определенный ранее для DataAdapter thisAdapter.Fill(thisDataSet, Customers ); foreach (DataRow theRow in thisDataSet.Tables[ Customers ].Rows) { Console.WriteLine(theRow[ CustomerID ] + \t + theRow[ ContactName ]); thisConnection.Close(); Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine(); 4. Откомпилируйте и выполните программу. Вы должны увидеть список идентификаторов заказчиков и имен компаний, как показано ниже: RICSU Michael Holz ROMEY Alejandra Camino SANTG Jonas Bergulfsen SAVEA Jose Pavarotti SEVES Hari Kumar SIMOB Jytte Petersen SPECD Dominique Perrier SPLIR Art Braunschweiger SUPRD Pascale Cartrain THEBI Liz Nixon THECR Liu Wong TOMSP Karin Josephs TORTU Miguel Angel Paolino TRADH Anabela Domingues TRAIH Helvetius Nagy VAFFE Palle Ibsen VICTE Mary Saveley VINET Paul Henriot WANDK Rita M ь Her WARTH Pirkko Koskitalo WELLI Paula Parente WHITC Karl Jablonski WILMK Matti Karttunen WOLZA Zbyszek Piestrzeniewicz Программа завершена, нажмите Enter для продолжения: Описание полученных результатов Сначала создается соединение, которое затем используется для создания объекта SqlDataAdapter: SqlConnection thisConnection = new SqlConnection ( @ Data Source=.\SQLEXPRESS; + @ AttachDbFilename=C:\SQL Server 2000 Sample Databases\NORTHWND .MDF; + @ Integrated Security=True;Connect Timeout=30 ;User Instance=true ) ; SqlDataAdapter thisAdapter = new SqlDataAdapter ( SELECT CustomerlD, ContactName FROM Customers , thisConnection); Следующий шаг - создание DataSet, который должен быть наполнен данными: DataSet thisDataSet = new DataSet (); Теперь есть объекты DataSet и адаптера данных (здесь - SqlAdapter, поскольку применяется поставщик SQL Server), и можно приступить к наполнению DataTable в DataSet: thisAdapter.Fill(thisDataSet, Customers ); Объект DataTable no имени Customers будет создан в DataSet. Обратите внимание, что здесь упоминание слова Customers не ссылается на таблицу Customers в базе данных Northwind. Оно специфицирует имя объекта DataTable в DataSet, который должен быть создан и наполнен данными. Когда DataSet заполнен данными, можно обращаться к индивидуальным строкам и столбцам. Процесс, необходимый для этого, прост - проход циклом по объектам DataRow в коллекции Rows объекта DataTable по имени Customers. Для каждого DataRow извлекаются значения столбцов CustomerlD и ContactName: foreach (DataRow theRow in thisDataSet.Tables[ Customers ].Rows) { Console.WriteLine(theRow[ CustomerlD ] + \t + theRow[ ContactName ]); Мы уже упоминали ранее, что объект DataRow имеет свойство-индексатор, позволяющее обращаться к его индивидуальным столбцам по имени и по номеру. Таким образом, theRow [ CustomerlD ] специфицирует столбец CustomerlD объекта theRow типа DataRow, а theRow [ ContactName ] специфицирует столбец ContactName объекта DataRow по имени theRow. Альтернативно можно было бы ссылаться на столбцы по номеру - CustomerlD был бы theRow[0] (если это первый столбец, извлеченный из базы данных), а ContactName стал бы theRow [1]. Однако обычно лучше ссылаться на столбец по имени, поскольку запрос может измениться в будущем, или же столбцы могут изменить порядок. Возможно, вы заметили, что в примере не выполняется явного открытия или закрытия соединения - об этом заботится адаптер. Объект-адаптер данных открывает соединение при необходимости и снова закрывает его по завершении работы. Адаптер данных сохраняет состояние соединения неизменным, поэтому если соединение было открыто до того, как адаптер начал работу, оно останется открытым и после того, как адаптер закончит ее. Итак, теперь вы знаете, как читать данные из базы. Вы использовали DaraReader, который требует поддержки соединения с базой данных на протяжении всей его работы. Вы также применяли адаптер данных для наполнения DataSet - при таком методе адаптер данных имеет дело с соединением, открывая и закрывая его по мере необходимости. DataReader также читает в одном направлении - он может осуществлять навигацию по записям последовательно или перепрыгивать к определенной записи напрямую. Как следует из его имени, DataReader только читает данные, в то время как DataSet обеспечивает невероятную гибкость, как для чтения, так и записи данных, а также работы с данными из разных источников. Вы оцените всю мощь DataSet по мере чтения настоящей главы. Чтение данных - только половина того, что требуется. Обычно необходимо и модифицировать данные, добавлять новые данные или удалять их, так что этим мы и займемся. Обновление базы данных Теперь, когда есть возможность читать данные из базы, возникает вопрос: как их изменять? В этом разделе предлагается очень простой пример, опять использующий только одну таблицу, и в то же время представляющий несколько новых объектов, которые применяются далее в этой главе. Все действия, которые вы обычно хотите выполнять в базе данных (обновление, вставка и удаление записей), могут быть осуществлены по одному и тому же шаблону. 1. Заполнить DataSet информацией из базы данных, с которой вы собираетесь работать. 2. Модифицировать данные, содержащиеся в DataSet (например, обновить, вставить или удалить записи). 3. После проведения всех модификаций сохранить изменения DataSet в базе данных. Вы не раз встретитесь с этой последовательностью, рассматривая примеры, и нет необходимости беспокоиться о точном синтаксисе SQL для обновления базы данных, и все модификации данных в базе могут быть выполнены в одно время. В следующем практическом занятии вы начнете с рассмотрения обновления данных в базе перед тем, как перейти к добавлению и удалению записей. Практическое занятие Обновление базы данных Предположим, что один из ваших заказчиков, Bottom-Dollar Markets, изменил название на Acme, Inc. Вам нужно изменить наименование компании в базе данных. При этом будет использоваться версия SQL Server/MSDE базы данных Northwind. L Создайте новое консольное приложение по имени UpdatingData в каталоге С;\BegVCSharp\Chapter28. 2. Начните с добавления директив using для классов ADO.NET, которые будут использоваться: #region Using Directives using System; using System.Data; Использовать пространство имен ADO.NET using Sys tem. Data. SqlClient; Использовать пространство имен поставщика дгшных SQL Server using System.Collections.Generic; using System.Text; #endregion
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |