Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
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());
}
Большинство указанных свойств самоочевидно, Но свойство State все же требует некоторого обсуждения. Этому свойству можно назначить любое значение из перечня ConnectionState
public enum System.Data. ConnectionState{
Broken, Closed,
Connecting, Executing,
Fetching, Open
}
но единственными действительными значениями ConnectionState являются ConnectionState.Open и ConnectionState.Closed (остальные члены этого перечня зарезервированы для использования в будущем). Также заметим, что вполне безопасно закрыть соединение, состоянием которого в настоящий момент является ConnectionState.Closed.
Работа с ConnectionStringBuilder в .NET 2.0
Работа в программе со строками соединений может оказаться достаточно сложной, например, из-за возможных опечаток, которые не всегда легко обнаружить, В рамках .NET 2.0 все предлагаемые Microsoft поставщики данных ADO.NET поддерживают объекты построителя строк соединений, позволяющие создавать пары имен и значений с помощью строго типизованных свойств. Рассмотрим следующую модификацию метода Main().
static void Main(string[] args) {
// Создание строки соединения с помощью объекта построителя.
SqlConnectionStringBuilder cnStrBuilder = new SqlConnectionStringBuilder();
cnStrBuilder.UserID = "sa";
cnStrBuilder.Password = "";
cnStrBuilder.InitialCatalog = "Cars";
cnStrBuilder.DataSource = "(local)";
cnStrBuilder.ConnectTimeout =30;
SqlConnection cn = new SqlConnection();
cn.ConnectionString = cnStrBuilder.ConnectionString;
cn.Open();
ShowConnectionStatus(cn);
…
}
В этом варианте программного кода создается экземпляр SqlConnectionStringBuilder, устанавливаются соответствующие свойства и с помощью свойства ConnectionString получается внутренняя строка. Заметьте, что здесь используется конструктор типа, заданный по умолчанию. Можно также создать экземпляр объекта построителя строк соединения для поставщика данных, передав уже существующую строку соединения в качестве исходной (это может оказаться полезно тогда, когда соответствующие значения считываются динамически ив файла app.config). Получив такой объект с начальными строковыми данными, вы можете изменить пары имен и значений с помощью соответствующих свойств, например:
static void Main(string[] args) {
Console.WriteLine("*** Забавы с чтением данных ***\n");
// Предположим, что строка cnStr получeна из файла *.config.
string cnStr = "uid=sa;pwd=;Initial Catalog=Cars;" +
"Data Source=(local);Connect Timeout=30";
SqlConnectionStringBuilder cnStrBuilder = new SqlConnectionStringBuilder(cnStr);
cnStrBuilder.UserID = "sa";
cnStrBuilder.Password = "";
caStrBuilder.InitialCatalog = "Cars";
cnStrBuilder.DataSource = "(local)";
Интервал:
Закладка: