По предыдущему программному коду вы можете заключить, что имя 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().
Читать дальше