Чтение онлайн

на главную - закладки

Жанры

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

1. Разместить, настроить и открыть объект соединения.

2. Разместить и настроить объект команды, передав ему объект соединения в виде аргумента конструктора или с помощью свойства Connection.

3. Вызвать ExecuteReader для сконфигурированного объекта команды.

4. Обработать каждую запись, используя метод Read объекта чтения данных.

Для начала создайте новое консольное приложение с названием CarsDataReader. Нашей целью является открытие соединения (с помощью объекта SqlConnection) а отправка SQL-запроса (с помощью объекта SqlCommand) для получения всех записей из таблицы Inventory базы данных Cars. Затем мы используем SqlDataReader, чтобы напечатать результаты с помощью индексатора типа. Вот соответствующий программный

код Main, за которым следует его анализ.

class Program {

 static void Main(string[] args) {

Console.WriteLine("***** Забавы с чтением данных *****\n");

// Создание и открытие соединения.

SqlConnection cn = new SqlConnection;

cn.ConnectionString = "uid=sa;pwd=;Initial Catalog=Cars;Data Source=(local)";

cn.Open;

// Создание объекта SQL-команды.

string strSQL = "Select * From Inventory";

SqlCommand myCommand = new SqlCommand(strSQL, cn);

// Получение объекта чтения данных в стиле ExecuteReader.

SqlDataReader myDataReader;

myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

// Цикл по результатам.

while (myDataReader.Read) {

Console.WriteLine("-› Марка – {0}, имя – {1}, цвет – {2}.",

myDataReader["Make"].ToString.Trim,

myDataReader["PetName"].ToString.Trim,

myDataReader["Color"].ToString.Trim);

}

// Поскольку был указан CommandBehavior.CloseConnection,

// для соединения нет необходимости явно вызывать Close.

myDataReader.Close;

 }

}

Работа с объектами соединения

Первым шагом в работе с поставщиком данных является создание соединения с источником данных, для чего мы используем объект соединения (который, как вы помните, получается из Disconnection). Типы соединения .NET получают на вход форматированную строку соединения, содержащую набор пар имен и значений, разделенных точками с запятой. Эта информация используется для идентификации машины, с которой требуется установить соединение, параметров безопасности, имени базы данных на удаленной машине и других данных, связанных с конкретным поставщиком данных.

По предыдущему программному коду вы можете заключить, что имя Initial Catalog (исходный каталог) дает ссылку на базу данных, с которой вы пытаетесь соединиться (Pubs, Northwind, Cars и т.д.). Имя Data Source (Источник данных) идентифицирует имя машины, поддерживающей базу данных (для простоты здесь предполагается, что для администраторов локальной системы никакого пароля не требуется).

Замечание. Чтобы узнать больше о парах имен и значений для той конкретной СУБД, которую используете вы, в документации .NET Framework 2.0 SDK найдите и прочитайте описание свойства ConnectionString объекта соединения для вашего поставщика данных.

После создания строки соединения само соединение с СУБД устанавливается с помощью вызова Open. В дополнение к ConnectionString, Open и Close объект соединения предлагает

еще целый ряд членов, которые позволяют настроить дополнительные параметры соединения, например, такие, как время ожидания и свойства транзакций. Описания некоторых членов базового класса DbConnection предлагаются в табл. 22.6.

Таблица 22.6. Члены типа DbConnection

Член Описание
BeginTransaction Метод, используемый для начала транзакции
ChangeDatabase Метод, используемый для смены базы данных при открытом соединении
ConnectionTimeout Доступное только для чтения свойство, возвращающее значение времени ожидания установки соединения, прежде чем будет сгенерирована ошибка (значением по умолчанию является 15 секунд). Чтобы изменить значение, используемое по умолчанию, укажите в строке соединения требуемое значение Connect Timeout (Например, Сonnect Timeout=30)
Database Свойство, сообщающее имя базы данных, используемой объектом соединения
DataSource Свойство, сообщающее информации о месте размещения базы данных, используемой объектом соединения
GetSchema Метод, возвращающий объект DataSet, который содержит схему базы данных, полученную от источник данных
State Свойство, устанавливающее текущее состояние соединения в соответствии со значениями из перечня ConnectionState

Как видите, свойства типа DbConnection в большинстве своем доступны только для чтения (в силу своей природы) и оказываются полезными только тогда, когда вы хотите получить характеристики соединений в среде выполнения. Чтобы переопределить значение, устанавливаемое по умолчанию, вы должны изменить строку соединения. Например, следующая строка соединения увеличивает время ожидания соединения с 15 до 30 секунд (путем указания соответствующего значения в сегменте Connect Timeout строки соединения).

static void Main(string[] args) {

 SqlConnection cn = new SqlConnection;

 cn.ConnectionString = "uid=sa;pwd=;initial Catalog=Cars;" +

"Data Source= (local);Connect Timeout = 30";

 cn.Open;

 // Новая вспомогательная функция (см. ниже).

 ShowConnectionStatus(cn);

 …

}

В этом фрагменте программного кода обратите внимание на то, что теперь объект соединения передается в виде параметра новому вспомогательному статическому методу ShowConnectionStatus класса Program, реализованному так, как показано ниже.

static void ShowConnectionStatus(DbConnection cn) {

 // Отображение информации о текущем объекте соединения.

 Console.WriteLine("***** Информация о соединении *****");

 Console.WriteLine("Размещение базы данных: {0}", cn.DataSource);

 Console.WriteLine("Имя базы данных: {0}", cn.Database);

 Console.WriteLine ("Время ожидания: {0}", cn.ConnectionTimeout);

 Console.WriteLine("Состояние соединения: {0}\n", cn.State.ToString);

Поделиться:
Популярные книги

Свадьба по приказу, или Моя непокорная княжна

Чернованова Валерия Михайловна
Любовные романы:
любовно-фантастические романы
5.57
рейтинг книги
Свадьба по приказу, или Моя непокорная княжна

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов

Отец моего жениха

Салах Алайна
Любовные романы:
современные любовные романы
7.79
рейтинг книги
Отец моего жениха

Вадбольский

Никитин Юрий Александрович
1. Вадбольский
Фантастика:
попаданцы
5.00
рейтинг книги
Вадбольский

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

В зоне особого внимания

Иванов Дмитрий
12. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
В зоне особого внимания

Таня Гроттер и магический контрабас

Емец Дмитрий Александрович
1. Таня Гроттер
Фантастика:
фэнтези
8.52
рейтинг книги
Таня Гроттер и магический контрабас

Бастард Императора. Том 2

Орлов Андрей Юрьевич
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бастард Императора. Том 2

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Возвышение Меркурия. Книга 16

Кронос Александр
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 16

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9

Потусторонний. Книга 1

Погуляй Юрий Александрович
1. Господин Артемьев
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Потусторонний. Книга 1