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. Element SqlConnection jest otwarty i ustawiany jako Connection dla .SqlCommand Następnie przykład wywołuje ExecuteNonQuerymetodę i zamyka połączenie. W tym ExecuteNonQuery celu parametr jest przekazywany parametry połączenia i ciąg zapytania, który jest 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 dziedziczonej klasie zaimplementowanie 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 interfejsu IDbConnection , ale tworzy wystąpienie klasy dziedziczonej IDbConnection.

Klasy dziedziczone IDbConnection muszą implementować wszystkie dziedziczone elementy członkowskie i zwykle 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ść .

Uwagi dotyczące implementowania

Aby podwyższyć spójność między dostawcami danych .NET Framework, nazwij klasę dziedzicującą w postaciPrvClassname, w której Prv jest jednolity prefiks nadany wszystkim klasom w określonej przestrzeni nazw dostawcy danych .NET Framework. Na przykład Sql jest prefiksem SqlConnection klasy w System.Data.SqlClient przestrzeni nazw.

Podczas dziedziczenia z interfejsu IDbConnection należy zaimplementować następujące konstruktory:

Element Opis
PrvConnection() Inicjuje nowe wystąpienie klasy PrvConnection.
PrvConnection(parametry connectionString) Inicjuje nowe wystąpienie klasy PrvConnection, gdy zostanie podany ciąg zawierający parametry połączenia.

Właściwości

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

BeginTransaction()

Rozpoczyna transakcję bazy danych.

BeginTransaction(IsolationLevel)

Rozpoczyna transakcję bazy danych o określonej 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 zdefiniowane przez aplikację zadania skojarzone ze zwalnianiem lub resetowaniem zasobów niezarządzanych.

(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