Teilen über


IDbConnection Schnittstelle

Definition

Stellt eine geöffnete Verbindung mit einer Datenquelle dar und wird von den .NET-Datenanbietern implementiert, die auf relationale Datenbanken zugreifen.

public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
    interface IDisposable
Public Interface IDbConnection
Implements IDisposable
Abgeleitet
Implementiert

Beispiele

Im folgenden Beispiel werden Instanzen der abgeleiteten Klassen SqlCommand und SqlConnectionerstellt. Wird SqlConnection geöffnet und als für Connection festgelegt SqlCommand. Das Beispiel ruft dann auf ExecuteNonQueryund schließt die Verbindung. Um dies zu erreichen, wird ein ExecuteNonQuery Verbindungszeichenfolge und eine Abfragezeichenfolge übergeben, bei der es sich um eine Insert-Anweisung von Transact-SQL handelt.

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

Hinweise

Die IDbConnection Schnittstelle ermöglicht es einer erbenden Klasse, eine Connection-Klasse zu implementieren, die eine eindeutige Sitzung mit einer Datenquelle darstellt (z. B. eine Netzwerkverbindung mit einem Server). Weitere Informationen zu Verbindungsklassen finden Sie unter Herstellen einer Verbindung mit einer Datenquelle.

Eine Anwendung erstellt nicht direkt eine instance der IDbConnection Schnittstelle, sondern eine instance einer Klasse, die erbtIDbConnection.

Klassen, die erben IDbConnection , müssen alle geerbten Member implementieren und in der Regel zusätzliche Member definieren, um anbieterspezifische Funktionen hinzuzufügen. Beispielsweise definiert die IDbConnection -Schnittstelle die ConnectionTimeout -Eigenschaft. Die -Klasse wiederum SqlConnection erbt diese Eigenschaft und definiert auch die PacketSize -Eigenschaft.

Hinweise für Ausführende

Um die Konsistenz zwischen .NET Framework Datenanbietern zu fördern, benennen Sie die erbende Klasse in der FormPrvClassname, wobei Prv das einheitliche Präfix ist, das allen Klassen in einem bestimmten .NET Framework-Datenanbieternamespace zugewiesen wird. Beispielsweise Sql ist das Präfix der SqlConnection -Klasse im System.Data.SqlClient -Namespace.

Wenn Sie von der IDbConnection -Schnittstelle erben, sollten Sie die folgenden Konstruktoren implementieren:

Element Beschreibung
PrvConnection() Initialisiert eine neue instance der PrvConnection-Klasse.
PrvConnection(string connectionString) Initialisiert eine neue instance der PrvConnection-Klasse, wenn eine Zeichenfolge angegeben wird, die den Verbindungszeichenfolge enthält.

Eigenschaften

ConnectionString

Ruft die Zeichenfolge ab, mit der eine Datenbank geöffnet wird, oder legt diese fest.

ConnectionTimeout

Ruft die Zeit (in Sekunden) ab, die beim Verbindungsaufbau gewartet werden soll, bis der Versuch beendet und ein Fehler generiert wird.

Database

Ruft den Namen der aktuellen Datenbank oder der nach dem Öffnen einer Verbindung zu verwendenden Datenbank ab.

State

Ruft den aktuellen Zustand der Verbindung ab.

Methoden

BeginTransaction()

Beginnt eine Datenbanktransaktion.

BeginTransaction(IsolationLevel)

Beginnt eine Datenbanktransaktion mit dem angegebenen IsolationLevel-Wert.

ChangeDatabase(String)

Ändert die aktuelle Datenbank für ein offenes Connection-Objekt.

Close()

Schließt die Verbindung mit der Datenbank.

CreateCommand()

Erstellt ein Command-Objekt, das der Verbindung zugeordnet ist, und gibt dieses zurück.

Dispose()

Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

(Geerbt von IDisposable)
Open()

Öffnet eine Datenbankverbindung mit den Einstellungen, die durch die ConnectionString-Eigenschaft des anbieterspezifischen Verbindungsobjekts angegebenen werden.

Gilt für: