Программирование >>  Программирование с использованием ajax 

1 ... 292 293 294 [ 295 ] 296 297 298 ... 396


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



1 ... 292 293 294 [ 295 ] 296 297 298 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика