Condividi tramite


IDbConnection Interfaccia

Definizione

Rappresenta una connessione aperta a un'origine dati e viene implementata dai provider di dati .NET che accedono ai database relazionali.

public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
    interface IDisposable
Public Interface IDbConnection
Implements IDisposable
Derivato
Implementazioni

Esempio

Nell'esempio seguente vengono create istanze delle classi SqlCommand derivate e SqlConnection. L'oggetto SqlConnection viene aperto e impostato come Connection per .SqlCommand L'esempio chiama ExecuteNonQueryquindi e chiude la connessione. A tale scopo, ExecuteNonQuery viene passato un stringa di connessione e una stringa di query che è un'istruzione 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

Commenti

L'interfaccia IDbConnection consente a una classe che eredita di implementare una classe Connection, che rappresenta una sessione univoca con un'origine dati, ad esempio una connessione di rete a un server. Per altre informazioni sulle classi connection, vedere Connessione a un'origine dati.

Un'applicazione non crea direttamente un'istanza dell'interfaccia IDbConnection , ma crea un'istanza di una classe che eredita IDbConnection.

Le classi che ereditano IDbConnection devono implementare tutti i membri ereditati e in genere definiscono membri aggiuntivi per aggiungere funzionalità specifiche del provider. Ad esempio, l'interfaccia IDbConnection definisce la ConnectionTimeout proprietà . A sua volta, la SqlConnection classe eredita questa proprietà e definisce anche la PacketSize proprietà .

Note per gli implementatori

Per promuovere la coerenza tra i provider di dati .NET Framework, denominare la classe che eredita nel formato PrvClassname dove Prv è il prefisso uniforme assegnato a tutte le classi in uno spazio dei nomi del provider di dati .NET Framework specifico. Ad esempio, Sql è il prefisso della SqlConnection classe nello spazio dei System.Data.SqlClient nomi .

Quando si eredita dall'interfaccia IDbConnection , è necessario implementare i costruttori seguenti:

Elemento Descrizione
PrvConnection() Inizializza una nuova istanza della classe PrvConnection.
PrvConnection(string connectionString) Inizializza una nuova istanza della classe PrvConnection quando viene specificata una stringa contenente il stringa di connessione.

Proprietà

ConnectionString

Ottiene o imposta la stringa usata per aprire un database.

ConnectionTimeout

Ottiene il tempo di attesa (in secondi) mentre si tenta di stabilire una connessione prima di terminare il tentativo e generare un errore.

Database

Ottiene il nome del database corrente o del database da usare dopo l'apertura della connessione.

State

Ottiene lo stato corrente della connessione.

Metodi

BeginTransaction()

Avvia una transazione di database.

BeginTransaction(IsolationLevel)

Avvia una transazione di database con il valore specificato di IsolationLevel.

ChangeDatabase(String)

Modifica il database corrente per un oggetto Connection aperto.

Close()

Chiude la connessione al database.

CreateCommand()

Crea e restituisce un oggetto Command associato alla connessione.

Dispose()

Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite.

(Ereditato da IDisposable)
Open()

Apre una connessione di database con le impostazioni specificate dalla proprietà ConnectionString dell'oggetto Connection specifico del provider.

Si applica a