Присоединенный режим (connected mode). Класс DbConnection
Перед изучением данной темы рекомендуется ознакомиться с темой:
Поиск на других ресурсах:
Содержание
- 1. Класс DbConnection. Общие сведения
- 2. Анализ методов и свойств класса DbConnection
- 3. Создание, открытие и закрытие соединения. Фрагмент
- 4. Примеры соединения с источником данных
- 5. Пример определения провайдера и доступа к источнику данных
- Связанные темы
1. Класс DbConnection. Общие сведения
Класс DBConnection используется для подключения к базе данных из приложения в подключенном режиме (connected mode). Понятие «соединенный режим» означает, что все операции с базой данных (чтение, вставка, обновление, удаление) выполняются в момент, когда база данных подключена (открыта). Для открытия соединения с базой данных используется метод Open() класса. Для закрытия соединения используется метод Close().
Класс DbConnection реализует интерфейс IDbConnection. Более подробно об особенностях реализации интрефейса IDbConnection можно прочитать здесь.
Чтобы использовать IDbConnection и производные от него классы, нужно подключить пространство имен System.Data.Common
using System.Data.Common;
Класс DBConnection является базовым для всех других классов подключений SqlConnection, OdbcConnection, OledbConnection.
С помощью объекта типа DbConnection можно задавать:
- тип источника данных;
- размещение источника данных;
- различные атрибуты источника данных.
Объект типа DbConnection используется для подключения к базе данных и отключения от нее.
⇑
2. Анализ методов и свойств класса DbConnection
Кроме двух вышеупомянутых методов Close() и Open() класс DbConnection имеет ряд других свойств и методов.
В следующей таблице отображаются свойства класса SqlConnection.
Свойство | Тип данных | Описание |
ConnectionString | String | Определяет способ подключения объекта SqlConnection к источнику |
ConnectionTimeOut | Int32 | Задает интервал времени в секундах, в течение которого объект SqlConnection пытается установить соединение с источником данных (доступно только для чтения) |
Database | String | Определяет имя базы данных, к которой произошло подключение |
DataSource | String | Возвращает информацию о размещении базы данных к которой происходит или произошло подключение (доступно только для чтения) |
PacketSize | Int32 | Размер пакета, используемый для обмена информацией с базой данных SQL Server (только для чтения) |
ServerVersion | String | Версия источника данных (только для чтения) |
State | ConnectionState | Указывает текущее состояние объекта SqlConnection – активное или уничтоженное (доступно только для чтения) |
WorkstationId | String | Возвращает имя клиента БД. По умолчанию равно имени компьютера |
Методы объекта SqlConnection представлены в следующей таблице.
Метод | Описание |
BeginTransaction | Начинает транзакцию для соединения |
ChangeDatabase | При открытом соединении переключается на указанную БД |
ClearAllPools | Очистка свободных соединений во всех пулах SqlConnection. Это статический метод |
ClearPool | Очищает свободные соединения в пуле соединений с соответствующим объектом типа SqlConnection. Это статический метод |
Close | Закрывает соединение |
CreateCommand | Создает объект типа SqlCommand для текущего соединения |
GetSchema | Получает информацию о схеме для соединения |
Open | Открывает соединение |
ResetStatistics | Сбрасывает статистику для текущего соединения |
RetrieveStatistics | Возвращает статистику для текущего соединения |
⇑
3. Создание, открытие и закрытие соединения. Фрагмент
В наиболее общем случае процедура использования соединения с базой данных состоит из следующих шагов.
1. Создание соединения (подключения)
SqlConnection connection = new SqlConnection(connStr);
здесь connStr – строка соединения с базой данных (Connection String).
2. Открытие соединения
connection.Open();
После открытия соединения с базой данных можно вносить изменения в эту базу данных.
3. Закрытие соединения
connection.Close();
После закрытия соединение с базой данных остается в так называемом «пуле соединений» до следующего обращения.
⇑
4. Примеры соединения с источником данных
В примерах ниже показаны различные способы изменения данных и их чтения в подключенном режиме. Источником данных является Sql Server. Рассматриваются фрагменты кода для приложения типа Windows Forms, в частности, обработчики событий клика на кнопке Button.
4.1. Установление подключения. Методы Open() и Close()
Установить подключение и получить информацию об особенностях источника данных можно приблизительно следующим образом.
// Метод, который создает SQL-соединение с базой данных private void CreateSQLConnection() { // Create SQL Connection // 1. Строка соединения с базой данных string connStr = @"Data Source=(localdb)\ProjectModels;" + "Initial Catalog=Database4;Integrated Security=True;" + "Connect Timeout=30;Encrypt=False;" + "TrustServerCertificate=False;ApplicationIntent=ReadWrite;" + "MultiSubnetFailover=False"; // 2. Создать подключение на основе строки соединения using (SqlConnection connection = new SqlConnection(connStr)) { try { // Открыть подключение connection.Open(); label1.Text = "Connection is open. "; label2.Text = "Database: " + connection.Database; label3.Text = "DataSource: " + connection.DataSource; } catch(SqlException e) { label1.Text = e.Message; } finally { // Закрыть подключение connection.Close(); label1.Text = label1.Text + "Connection is closed..."; } } }
Принцип работы следующий:
- открыть соединение с базой данных;
- выполнить операции над базой данных;
- закрыть соединение.
⇑
4.2. Прочитать данные из базы данных
Нижеследующий фрагмент демонстрирует чтение данных из таблицы Table1 базы данных с именем Database4 на основе:
- строки queryStr запроса на языке SQL (T-SQL);
- строки соединения с базой данных (Connection String).
private void GetDataFromDataBase() { // Читает строки из базы данных // 1. Строка запроса string queryStr = "SELECT * FROM [dbo].[Table1]"; // 2. Строка подключения string connStr = @"Data Source=(localdb)\ProjectModels;" + "Initial Catalog=Database4;Integrated Security=True;"; // 3. Получить данные using (SqlConnection connection = new SqlConnection(connStr)) { try { // создать команду на языке SQL DbCommand command = connection.CreateCommand(); command.CommandText = queryStr; command.CommandType = CommandType.Text; // Открыть соединение connection.Open(); // Получить данные - класс DDataReader DbDataReader dataReader = command.ExecuteReader(); // Вывести данные в listBox1 listBox1.Items.Clear(); while (dataReader.Read()) { listBox1.Items.Add(dataReader[0].ToString() + " - " + dataReader[1].ToString()); } } catch (Exception e) { MessageBox.Show(e.Message); } finally { // Закрыть соединение connection.Close(); } } }
⇑
4.3. Получить информацию о соединении
Для получения информации о соединении можно использовать приблизительно следующий код. В противном случае можно изменить только строку соединения с базой данных connStr.
// Получить информацию о соединении private void GetInformationAboutConnection() { // 1. Сформировать строку подключения string connStr = @"Data Source=(localdb)\ProjectModels;" + "Initial Catalog=Database4;Integrated Security=True;"; // 2. Получить информацию using (SqlConnection connection = new SqlConnection(connStr)) { try { // Открыть подключение connection.Open(); listBox1.Items.Add("Connection is open..."); listBox1.Items.Add("Database: " + connection.Database); listBox1.Items.Add("DataSource: " + connection.DataSource); listBox1.Items.Add("State: " + connection.State.ToString()); listBox1.Items.Add("Server Version: " + connection.ServerVersion); listBox1.Items.Add("Access Token: " + connection.AccessToken); } catch (SqlException e) { MessageBox.Show(e.Message); } finally { // Закрыть подключение connection.Close(); label1.Text = "Connection is closed..."; } } }
⇑
5. Пример определения провайдера и доступа к источнику данных
Пример обработчика события для приложения типа Windows Forms, в котором выбирается подключение и устанавливается соответствующее соединение в подключенном режиме (connected mode).
// Пример определения провайдера с целью доступа к источнику данных private void button5_Click(object sender, EventArgs e) { // Ссылка на соединение IDbConnection conn = null; // Получить выделенный элемент int index = comboBox1.SelectedIndex; // Получить имя провайдера string provider = comboBox1.Text; // Создать соединение if (provider == "SqlServer") { conn = new SqlConnection(); } else if (provider == "OleDb") { conn = new OleDbConnection(); } else if (provider == "Odbc") { conn = new OdbcConnection(); } if (provider == "None") { return; } string info = conn.GetType().Name; listBox1.Items.Clear(); listBox1.Items.Add(info); }
⇑
Связанные темы
- Введение в ADO .NET. Поставщики данных. Пространства имен ADO .NET
- Пространства имен ADO .NET. Обзор. Интерфейсы ADO .NET
⇑