Udostępnij za pośrednictwem


IDbConnection Interfejs

Definicja

Reprezentuje otwarte połączenie ze źródłem danych i jest implementowane przez dostawców danych platformy .NET, którzy uzyskują dostęp do relacyjnych baz danych.

public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
    interface IDisposable
Public Interface IDbConnection
Implements IDisposable
Pochodne
Implementuje

Przykłady

Poniższy przykład tworzy wystąpienia klas SqlCommand pochodnych i SqlConnection. Właściwość SqlConnection jest otwierana i ustawiana jako Connection dla elementu SqlCommand. W tym przykładzie wywołamy ExecuteNonQuerymetodę , a następnie zamkniemy połączenie. W tym ExecuteNonQuery celu parametr połączenia jest przekazywany i parametry zapytania, które są instrukcją 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

Uwagi

Interfejs IDbConnection umożliwia dziedziczącą klasę implementowania klasy Connection, która reprezentuje unikatową sesję ze źródłem danych (na przykład połączenie sieciowe z serwerem). Aby uzyskać więcej informacji na temat klas połączeń, zobacz Łączenie ze źródłem danych.

Aplikacja nie tworzy bezpośrednio wystąpienia interfejsuIDbConnection, ale tworzy wystąpienie klasy dziedziczonej .IDbConnection

Klasy dziedziczone IDbConnection muszą implementować wszystkie dziedziczone elementy członkowskie i zazwyczaj definiują dodatkowe elementy członkowskie w celu dodania funkcji specyficznych dla dostawcy. Na przykład IDbConnection interfejs definiuje ConnectionTimeout właściwość . Z kolei SqlConnection klasa dziedziczy tę właściwość, a także definiuje PacketSize właściwość .

Notatki dotyczące implementowania

Aby promować spójność wśród dostawców danych programu .NET Framework, nazwij klasę dziedziczącą w postaci PrvClassname , w której Prv jest jednolity prefiks podany dla wszystkich klas w określonej przestrzeni nazw dostawcy danych programu .NET Framework. Na przykład Sql jest prefiksem SqlConnection klasy w System.Data.SqlClient przestrzeni nazw.

Po dziedziczeniu z interfejsu IDbConnection należy zaimplementować następujące konstruktory:

Przedmiot Opis
PrvConnection() Inicjuje nowe wystąpienie klasy PrvConnection.
PrvConnection(parametry connectionString) Inicjuje nowe wystąpienie klasy PrvConnection, gdy podane parametry połączenia zawierają parametry połączenia.

Właściwości

Nazwa Opis
ConnectionString

Pobiera lub ustawia ciąg używany do otwierania bazy danych.

ConnectionTimeout

Pobiera czas oczekiwania (w sekundach) podczas próby nawiązania połączenia przed zakończeniem próby i wygenerowaniem błędu.

Database

Pobiera nazwę bieżącej bazy danych lub bazy danych do użycia po otwarciu połączenia.

State

Pobiera bieżący stan połączenia.

Metody

Nazwa Opis
BeginTransaction()

Rozpoczyna transakcję bazy danych.

BeginTransaction(IsolationLevel)

Rozpoczyna transakcję bazy danych z określoną IsolationLevel wartością.

ChangeDatabase(String)

Zmienia bieżącą bazę danych dla otwartego Connection obiektu.

Close()

Zamyka połączenie z bazą danych.

CreateCommand()

Tworzy i zwraca obiekt Command skojarzony z połączeniem.

Dispose()

Wykonuje zadania zdefiniowane przez aplikację skojarzone z zwalnianiem, wydawaniem lub resetowaniem niezarządzanych zasobów.

(Odziedziczone po IDisposable)
Open()

Otwiera połączenie bazy danych z ustawieniami określonymi przez ConnectionString właściwość obiektu połączenia specyficznego dla dostawcy.

Dotyczy