IDbConnection Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет открытое подключение к источнику данных и реализуется поставщиками данных .NET, которые обращаются к реляционным базам данных.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Производный
- Реализации
Примеры
В следующем примере создаются экземпляры производных классов SqlCommand и SqlConnection. Откроется SqlConnection и задано значение Connection для SqlCommandпараметра . Затем в примере вызывается ExecuteNonQueryи закрывается соединение. Для этого ExecuteNonQuery передается строка подключения и строка запроса, которая является инструкцией Transact-SQL INSERT.
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() |
Открывает подключение к базе данных с параметрами, указанными |