IDbConnection Gränssnitt

Definition

Representerar en öppen anslutning till en datakälla och implementeras av .NET dataleverantörer som har åtkomst till relationsdatabaser.

public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
    interface IDisposable
Public Interface IDbConnection
Implements IDisposable
Härledda
Implementeringar

Exempel

I följande exempel skapas instanser av de härledda klasserna SqlCommand och SqlConnection. SqlConnection Öppnas och anges som Connection för SqlCommand. Exemplet anropar ExecuteNonQuerysedan och stänger anslutningen. För att åstadkomma detta skickas ExecuteNonQuery en reťazec pripojenia och en frågesträng som är en Transact-SQL INSERT-instruktion.

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

Kommentarer

Gränssnittet IDbConnection gör det möjligt för en ärvande klass att implementera en anslutningsklass, som representerar en unik session med en datakälla (till exempel en nätverksanslutning till en server). Mer information om anslutningsklasser finns i Ansluta till en datakälla.

Ett program skapar inte en instans av IDbConnection gränssnittet direkt, men skapar en instans av en klass som ärver IDbConnection.

Klasser som ärver IDbConnection måste implementera alla ärvda medlemmar och vanligtvis definiera ytterligare medlemmar för att lägga till providerspecifika funktioner. Gränssnittet definierar ConnectionTimeout till exempel IDbConnection egenskapen. Klassen ärver i sin tur den SqlConnection här egenskapen och definierar PacketSize även egenskapen.

Anteckningar till implementerare

Om du vill främja konsekvens mellan .NET Framework-dataprovidrar namnger du ärvningsklassen i formuläret PrvClassname där Prv är det enhetliga prefix som ges till alla klasser i ett specifikt .NET Framework-dataprovidernamnområde. Är till exempel Sql prefixet för SqlConnection klassen i System.Data.SqlClient namnområdet.

När du ärver från IDbConnection gränssnittet bör du implementera följande konstruktorer:

Artikel Beskrivning
PrvConnection() Initierar en ny instans av klassen PrvConnection.
PrvConnection(string connectionString) Initierar en ny instans av klassen PrvConnection när du får en sträng som innehåller reťazec pripojenia.

Egenskaper

Name Description
ConnectionString

Hämtar eller anger strängen som används för att öppna en databas.

ConnectionTimeout

Hämtar tid att vänta (i sekunder) när du försöker upprätta en anslutning innan du avslutar försöket och genererar ett fel.

Database

Hämtar namnet på den aktuella databasen eller databasen som ska användas när en anslutning har öppnats.

State

Hämtar det aktuella tillståndet för anslutningen.

Metoder

Name Description
BeginTransaction()

Påbörjar en databastransaktion.

BeginTransaction(IsolationLevel)

Påbörjar en databastransaktion med det angivna IsolationLevel värdet.

ChangeDatabase(String)

Ändrar den aktuella databasen för ett öppet Connection objekt.

Close()

Stänger anslutningen till databasen.

CreateCommand()

Skapar och returnerar ett kommandoobjekt som är associerat med anslutningen.

Dispose()

Utför programdefinierade uppgifter som är associerade med att frigöra, frigöra eller återställa ohanterade resurser.

(Ärvd från IDisposable)
Open()

Öppnar en databasanslutning med de inställningar som anges av ConnectionString egenskapen för det providerspecifika anslutningsobjektet.

Gäller för