IDbConnection Interface

Definição

Representa uma ligação aberta a uma fonte de dados e é implementado por fornecedores de dados .NET que acedem a bases de dados relacionais.

public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
    interface IDisposable
Public Interface IDbConnection
Implements IDisposable
Derivado
Implementações

Exemplos

O exemplo seguinte cria instâncias das classes derivadas, SqlCommand e SqlConnection. O SqlConnection é aberto e definido como o Connection para o SqlCommand. O exemplo chama ExecuteNonQueryentão , e fecha a ligação. Para isso, o ExecuteNonQuery recebe uma cadeia de ligação e uma cadeia de consulta que é uma instrução 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

Observações

A IDbConnection interface permite que uma classe herdadora implemente uma classe Connection, que representa uma sessão única com uma fonte de dados (por exemplo, uma ligação de rede a um servidor). Para mais informações sobre classes de Conexão, consulte Ligação a uma Fonte de Dados.

Uma aplicação não cria diretamente uma instância da IDbConnection interface, mas cria uma instância de uma classe que herda IDbConnection.

As classes que herdam IDbConnection devem implementar todos os membros herdados, e normalmente definem membros adicionais para adicionar funcionalidades específicas do fornecedor. Por exemplo, a IDbConnection interface define a ConnectionTimeout propriedade. Por sua vez, a SqlConnection classe herda esta propriedade e também define a propriedade PacketSize .

Notas para Implementadores

Para promover a consistência entre .NET fornecedores de dados do Framework, nomeie a classe herdeira na forma PrvClassname onde Prv é o prefixo uniforme dado a todas as classes num determinado espaço de nomes do fornecedor de dados .NET Framework. Por exemplo, Sql é o prefixo da SqlConnection classe no System.Data.SqlClient namespace.

Quando herdas da IDbConnection interface, deves implementar os seguintes construtores:

Número Descrição
PrvConnection() Inicializa uma nova instância da classe PrvConnection.
PrvConnection (string connectionString) Inicializa uma nova instância da classe PrvConnection quando recebe uma string contendo a cadeia de ligação.

Propriedades

Name Description
ConnectionString

Obtém ou define a cadeia usada para abrir uma base de dados.

ConnectionTimeout

Obtém o tempo de espera (em segundos) enquanto tentam estabelecer uma ligação antes de terminar a tentativa e gerar um erro.

Database

Obtém o nome da base de dados atual ou da base de dados a ser usada após a abertura de uma ligação.

State

Obtém o estado atual da ligação.

Métodos

Name Description
BeginTransaction()

Inicia uma transação de base de dados.

BeginTransaction(IsolationLevel)

Inicia uma transação de base de dados com o valor especificado IsolationLevel .

ChangeDatabase(String)

Altera a base de dados atual para um objeto aberto Connection .

Close()

Fecha a ligação à base de dados.

CreateCommand()

Cria e devolve um objeto Command associado à ligação.

Dispose()

Realiza tarefas definidas pela aplicação associadas à libertação, libertação ou reinício de recursos não geridos.

(Herdado de IDisposable)
Open()

Abre uma ligação à base de dados com as definições especificadas pela ConnectionString propriedade do objeto Connection específico do fornecedor.

Aplica-se a