IDbConnection Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет открытое подключение к источнику данных и реализуется с помощью поставщиков данных .NET, которые имеют доступ к реляционным базам данных.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Производный
- Реализации
Примеры
В следующем примере создаются экземпляры производных классов и SqlCommandSqlConnection. Соединение SqlConnection открыто и задано в свойстве Connection объекта SqlCommand. Затем в примере вызывается ExecuteNonQueryи соединение закрывается. Для этого ExecuteNonQuery передается строка подключения и строка запроса, которая является инструкцией INSERT Transact-SQL.
using System;
using System.Data;
namespace IDbConnectionSample {
class Program {
static void Main(string[] args) {
IDbConnection connection;
// First use a SqlClient connection
connection = new System.Data.SqlClient.SqlConnection(@"Server=(localdb)\V11.0");
Console.WriteLine("SqlClient\r\n{0}", GetServerVersion(connection));
connection = new System.Data.SqlClient.SqlConnection(@"Server=(local);Integrated Security=true");
Console.WriteLine("SqlClient\r\n{0}", GetServerVersion(connection));
// Call the same method using ODBC
// NOTE: LocalDB requires the SQL Server 2012 Native Client ODBC driver
connection = new System.Data.Odbc.OdbcConnection(@"Driver={SQL Server Native Client 11.0};Server=(localdb)\v11.0");
Console.WriteLine("ODBC\r\n{0}", GetServerVersion(connection));
connection = new System.Data.Odbc.OdbcConnection(@"Driver={SQL Server Native Client 11.0};Server=(local);Trusted_Connection=yes");
Console.WriteLine("ODBC\r\n{0}", GetServerVersion(connection));
// Call the same method using OLE DB
connection = new System.Data.OleDb.OleDbConnection(@"Provider=SQLNCLI11;Server=(localdb)\v11.0;Trusted_Connection=yes;");
Console.WriteLine("OLE DB\r\n{0}", GetServerVersion(connection));
connection = new System.Data.OleDb.OleDbConnection(@"Provider=SQLNCLI11;Server=(local);Trusted_Connection=yes;");
Console.WriteLine("OLE DB\r\n{0}", GetServerVersion(connection));
}
public static string GetServerVersion(IDbConnection connection) {
// Ensure that the connection is opened (otherwise executing the command will fail)
ConnectionState originalState = connection.State;
if (originalState != ConnectionState.Open)
connection.Open();
try {
// Create a command to get the server version
// NOTE: The query's syntax is SQL Server specific
IDbCommand command = connection.CreateCommand();
command.CommandText = "SELECT @@version";
return (string)command.ExecuteScalar();
}
finally {
// Close the connection if that's how we got it
if (originalState == ConnectionState.Closed)
connection.Close();
}
}
}
}
Imports System.Data
Class Program
Public Shared Sub Main(args As String())
Dim connection As IDbConnection
' First use a SqlClient connection
connection = New System.Data.SqlClient.SqlConnection("Server=(localdb)\V11.0")
Console.WriteLine("SqlClient" & vbCr & vbLf & "{0}", GetServerVersion(connection))
connection = New System.Data.SqlClient.SqlConnection("Server=(local);Integrated Security=true")
Console.WriteLine("SqlClient" & vbCr & vbLf & "{0}", GetServerVersion(connection))
' Call the same method using ODBC
' NOTE: LocalDB requires the SQL Server 2012 Native Client ODBC driver
connection = New System.Data.Odbc.OdbcConnection("Driver={SQL Server Native Client 11.0};Server=(localdb)\v11.0")
Console.WriteLine("ODBC" & vbCr & vbLf & "{0}", GetServerVersion(connection))
connection = New System.Data.Odbc.OdbcConnection("Driver={SQL Server Native Client 11.0};Server=(local);Trusted_Connection=yes")
Console.WriteLine("ODBC" & vbCr & vbLf & "{0}", GetServerVersion(connection))
' Call the same method using OLE DB
connection = New System.Data.OleDb.OleDbConnection("Provider=SQLNCLI11;Server=(localdb)\v11.0;Trusted_Connection=yes;")
Console.WriteLine("OLE DB" & vbCr & vbLf & "{0}", GetServerVersion(connection))
connection = New System.Data.OleDb.OleDbConnection("Provider=SQLNCLI11;Server=(local);Trusted_Connection=yes;")
Console.WriteLine("OLE DB" & vbCr & vbLf & "{0}", GetServerVersion(connection))
End Sub
Public Shared Function GetServerVersion(connection As IDbConnection) As String
' Ensure that the connection is opened (otherwise executing the command will fail)
Dim originalState As ConnectionState = connection.State
If originalState <> ConnectionState.Open Then
connection.Open()
End If
Try
' Create a command to get the server version
' NOTE: The query's syntax is SQL Server specific
Dim command As IDbCommand = connection.CreateCommand()
command.CommandText = "SELECT @@version"
Return DirectCast(command.ExecuteScalar(), String)
Finally
' Close the connection if that's how we got it
If originalState = ConnectionState.Closed Then
connection.Close()
End If
End Try
End Function
End Class
Комментарии
Интерфейс IDbConnection позволяет наследующим классу реализовать класс Connection, который представляет уникальный сеанс с источником данных (например, сетевое подключение к серверу). Дополнительные сведения о классах подключений см. в разделе Подключение к источнику данных.
Приложение не создает экземпляр IDbConnection интерфейса напрямую, но создает экземпляр класса, который наследует IDbConnection.
Наследуемые IDbConnection классы должны реализовывать все унаследованные члены и, как правило, определять дополнительные члены для добавления функций, зависящих от поставщика. Например, IDbConnection интерфейс определяет ConnectionTimeout свойство . В свою очередь, SqlConnection класс наследует это свойство, а также определяет PacketSize свойство .
Примечания для тех, кто реализует этот метод
Чтобы повысить согласованность между поставщиками данных платформа .NET Framework, наследующий класс назовите в формеPrvClassname
, где Prv
— это универсальный префикс, заданный всем классам в определенном пространстве имен поставщика данных платформа .NET Framework. Например, Sql
является префиксом SqlConnection класса в System.Data.SqlClient
пространстве имен .
При наследовании IDbConnection от интерфейса следует реализовать следующие конструкторы:
Элемент | Описание |
---|---|
PrvConnection() | Инициализирует новый экземпляр класса PrvConnection. |
PrvConnection(string connectionString) | Инициализирует новый экземпляр класса PrvConnection при получении строки, содержащей строка подключения. |
Свойства
ConnectionString |
Получает или задает строку, используемую для открытия базы данных. |
ConnectionTimeout |
Возвращает значение времени ожидания (в секундах) при попытке установления подключения, по истечении которого процедура завершается и генерируется ошибка. |
Database |
Получает имя текущей базы данных или базы данных, которая будет использоваться после открытия подключения. |
State |
Возвращает текущее состояние подключения. |
Методы
BeginTransaction() |
Начинает транзакцию базы данных. |
BeginTransaction(IsolationLevel) |
Начинает транзакцию базы данных с указанным значением IsolationLevel. |
ChangeDatabase(String) |
Изменяет текущую базу данных для открытого объекта |
Close() |
Закрывает соединение с базой данных. |
CreateCommand() |
Создает и возвращает объект Command, связанный с подключением. |
Dispose() |
Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов. (Унаследовано от IDisposable) |
Open() |
Устанавливает подключение к базе данных с параметрами, указанными в свойстве |