IDbConnection Interfejs

Definicja

Reprezentuje otwarte połączenie ze źródłem danych i jest implementowane przez .NET Framework dostawców danych, którzy uzyskują dostęp do relacyjnych baz danych.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
Pochodne
Implementuje

Przykłady

Poniższy przykład tworzy wystąpienia klas pochodnych SqlCommand i SqlConnection .The following example creates instances of the derived classes, SqlCommand and SqlConnection. SqlConnectionJest otwarty i ustawiany jako Connection dla SqlCommand .The SqlConnection is opened and set as the Connection for the SqlCommand. Przykład następnie wywołuje ExecuteNonQuery i zamyka połączenie.The example then calls ExecuteNonQuery, and closes the connection. W tym celu ExecuteNonQuery jest przekazanie parametrów połączenia i ciągu zapytania, który jest instrukcją INSERT języka Transact-SQL.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

Uwagi

IDbConnectionInterfejs umożliwia dziedziczenie klasy w celu zaimplementowania klasy połączeń, która reprezentuje unikatową sesję ze źródłem danych (na przykład połączenie sieciowe z serwerem).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). Aby uzyskać więcej informacji o klasach połączeń, zobacz nawiązywanie połączenia ze źródłem danych.For more information about Connection classes, see Connecting to a Data Source.

Aplikacja nie tworzy wystąpienia IDbConnection interfejsu bezpośrednio, ale tworzy wystąpienie klasy, która dziedziczy IDbConnection .An application does not create an instance of the IDbConnection interface directly, but creates an instance of a class that inherits IDbConnection.

Klasy dziedziczące IDbConnection muszą implementować wszystkich dziedziczonych elementów członkowskich i zwykle definiują dodatkowe elementy członkowskie, aby dodać funkcje specyficzne dla dostawcy.Classes that inherit IDbConnection must implement all inherited members, and typically define additional members to add provider-specific functionality. Na przykład IDbConnection Interfejs definiuje ConnectionTimeout Właściwość.For example, the IDbConnection interface defines the ConnectionTimeout property. Z kolei SqlConnection Klasa dziedziczy tę właściwość, a także definiuje PacketSize Właściwość.In turn, the SqlConnection class inherits this property, and also defines the PacketSize property.

Uwagi dotyczące implementowania

Aby podwyższyć poziom spójności między dostawcami danych .NET Framework, nazwij klasę dziedziczenia w formularzu, PrvClassname gdzie Prv jest jednolitym prefiksem dla wszystkich klas w konkretnym obszarze nazw dostawcy danych .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. Na przykład, Sql jest prefiksem SqlConnection klasy w System.Data.SqlClient przestrzeni nazw.For example, Sql is the prefix of the SqlConnection class in the System.Data.SqlClient namespace.

W przypadku dziedziczenia z IDbConnection interfejsu należy zaimplementować następujące konstruktory:When you inherit from the IDbConnection interface, you should implement the following constructors:

ElementItem OpisDescription
PrvConnection()PrvConnection() Inicjuje nowe wystąpienie klasy PrvConnection.Initializes a new instance of the PrvConnection class.
PrvConnection (ciąg connectionString)PrvConnection(string connectionString) Inicjuje nowe wystąpienie klasy PrvConnection, gdy zostanie określony ciąg zawierający parametry połączenia.Initializes a new instance of the PrvConnection class when given a string containing the connection string.

Właściwości

ConnectionString

Pobiera lub ustawia ciąg używany do otwierania bazy danych.Gets or sets the string used to open a database.

ConnectionTimeout

Pobiera czas oczekiwania (w sekundach) podczas próby nawiązania połączenia przed zakończeniem próby i wygenerowaniem błędu.Gets the time to wait (in seconds) while trying to establish a connection before terminating the attempt and generating an error.

Database

Pobiera nazwę bieżącej bazy danych lub bazę danych, która ma zostać użyta po otwarciu połączenia.Gets the name of the current database or the database to be used after a connection is opened.

State

Pobiera bieżący stan połączenia.Gets the current state of the connection.

Metody

BeginTransaction()

Rozpoczyna transakcję bazy danych.Begins a database transaction.

BeginTransaction(IsolationLevel)

Rozpoczyna transakcję bazy danych o określonej IsolationLevel wartości.Begins a database transaction with the specified IsolationLevel value.

ChangeDatabase(String)

Zmienia bieżącą bazę danych dla otwartego Connection obiektu.Changes the current database for an open Connection object.

Close()

Zamyka połączenie z bazą danych.Closes the connection to the database.

CreateCommand()

Tworzy i zwraca obiekt polecenia skojarzony z połączeniem.Creates and returns a Command object associated with the connection.

Dispose()

Wykonuje zdefiniowane przez aplikację zadania skojarzone ze zwalnianiem lub resetowaniem zasobów niezarządzanych.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

(Odziedziczone po IDisposable)
Open()

Otwiera połączenie z bazą danych z ustawieniami określonymi przez ConnectionString właściwość obiektu połączenia specyficznego dla dostawcy.Opens a database connection with the settings specified by the ConnectionString property of the provider-specific Connection object.

Dotyczy