Поделиться через


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)

Изменяет текущую базу данных для открытого Connection объекта.

Close()

Закрывает подключение к базе данных.

CreateCommand()

Создает и возвращает объект Command, связанный с подключением.

Dispose()

Выполняет определяемые приложением задачи, связанные с освобождением, освобождением или сбросом неуправляемых ресурсов.

(Унаследовано от IDisposable)
Open()

Открывает подключение к базе данных с параметрами, указанными ConnectionString свойством объекта connection для конкретного поставщика.

Применяется к