IDbConnection Интерфейс

Определение

Представляет открытое подключение к источнику данных и реализуется поставщиками данных платформы NET Framework, которые имеют доступ к реляционным базам данных.Represents an open connection to a data source, and is implemented by .NET Framework data providers that access relational databases.

public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
    interface IDisposable
Public Interface IDbConnection
Implements IDisposable
Производный
Реализации

Примеры

В следующем примере создаются экземпляры производных классов, SqlCommand и SqlConnection.The following example creates instances of the derived classes, SqlCommand and SqlConnection. Соединение SqlConnection открыто и задано в свойстве Connection объекта SqlCommand.The SqlConnection is opened and set as the Connection for the SqlCommand. Затем в примере вызывается ExecuteNonQueryи закрывается соединение.The example then calls ExecuteNonQuery, and closes the connection. Для этого ExecuteNonQuery передается строка подключения и строка запроса, которая является инструкцией Transact-SQL INSERT.To accomplish this, the ExecuteNonQuery is passed a connection string and a query string that is a Transact-SQL INSERT statement.

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, который представляет уникальный сеанс с источником данных (например, сетевое подключение к серверу).The IDbConnection interface enables an inheriting class to implement a Connection class, which represents a unique session with a data source (for example, a network connection to a server). Дополнительные сведения о классах соединений см. в разделе Подключение к источнику данных.For more information about Connection classes, see Connecting to a Data Source.

Приложение не создает экземпляр интерфейса IDbConnection напрямую, но создает экземпляр класса, наследующего IDbConnection.An application does not create an instance of the IDbConnection interface directly, but creates an instance of a class that inherits IDbConnection.

Классы, наследующие IDbConnection, должны реализовывать все наследуемые члены и, как правило, определять дополнительные члены для добавления функций, зависящих от поставщика.Classes that inherit IDbConnection must implement all inherited members, and typically define additional members to add provider-specific functionality. Например, интерфейс IDbConnection определяет свойство ConnectionTimeout.For example, the IDbConnection interface defines the ConnectionTimeout property. В свою очередь, класс SqlConnection наследует это свойство, а также определяет свойство PacketSize.In turn, the SqlConnection class inherits this property, and also defines the PacketSize property.

Примечания для тех, кто реализует этот метод

Чтобы обеспечить согласованность между .NET Framework поставщиками данных, назовите класс-наследник в форме PrvClassname, где Prv является универсальным префиксом, присвоенным всем классам в определенном пространстве имен .NET Framework поставщика данных.To promote consistency among .NET Framework data providers, name the inheriting class in the form PrvClassname where Prv is the uniform prefix given to all classes in a specific .NET Framework data provider namespace. Например, Sql является префиксом класса SqlConnection в пространстве имен System.Data.SqlClient.For example, Sql is the prefix of the SqlConnection class in the System.Data.SqlClient namespace.

При наследовании от интерфейса IDbConnection необходимо реализовать следующие конструкторы:When you inherit from the IDbConnection interface, you should implement the following constructors:

ЭлементItem ОписаниеDescription
Првконнектион ()PrvConnection() Инициализирует новый экземпляр класса Првконнектион.Initializes a new instance of the PrvConnection class.
Првконнектион (строка connectionString)PrvConnection(string connectionString) Инициализирует новый экземпляр класса Првконнектион, если задана строка, содержащая строку подключения.Initializes a new instance of the PrvConnection class when given a string containing the connection string.

Свойства

ConnectionString

Получает или задает строку, используемую для открытия базы данных.Gets or sets the string used to open a database.

ConnectionTimeout

Возвращает значение времени ожидания (в секундах) при попытке установления подключения, по истечении которого процедура завершается и генерируется ошибка.Gets the time to wait (in seconds) while trying to establish a connection before terminating the attempt and generating an error.

Database

Получает имя текущей базы данных или базы данных, которая будет использоваться после открытия подключения.Gets the name of the current database or the database to be used after a connection is opened.

State

Возвращает текущее состояние подключения.Gets the current state of the connection.

Методы

BeginTransaction()

Начинает транзакцию базы данных.Begins a database transaction.

BeginTransaction(IsolationLevel)

Начинает транзакцию базы данных с указанным значением IsolationLevel.Begins a database transaction with the specified IsolationLevel value.

ChangeDatabase(String)

Изменяет текущую базу данных для открытого объекта Connection.Changes the current database for an open Connection object.

Close()

Закрывает соединение с базой данных.Closes the connection to the database.

CreateCommand()

Создает и возвращает объект Command, связанный с подключением.Creates and returns a Command object associated with the connection.

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

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

Устанавливает подключение к базе данных с параметрами, указанными в свойстве ConnectionString объекта Connection для определенного поставщика.Opens a database connection with the settings specified by the ConnectionString property of the provider-specific Connection object.

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