IDbConnection Interface
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
| 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 |