IDbConnection Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa una conexión abierta a un origen de datos y se implementa mediante proveedores de datos de .NET que acceden a bases de datos relacionales.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Derivado
- Implementaciones
Ejemplos
En el ejemplo siguiente se crean instancias de las clases derivadas y SqlCommandSqlConnection. SqlConnection se abre y se establece como para Connection .SqlCommand A continuación, el ejemplo llama a ExecuteNonQueryy cierra la conexión. Para ello, ExecuteNonQuery se pasa un cadena de conexión y una cadena de consulta que es una instrucción INSERT de Transact-SQL.
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
Comentarios
La IDbConnection interfaz permite que una clase heredada implemente una clase Connection, que representa una sesión única con un origen de datos (por ejemplo, una conexión de red a un servidor). Para obtener más información sobre las clases Connection, consulte Conexión a un origen de datos.
Una aplicación no crea una instancia de la IDbConnection interfaz directamente, sino que crea una instancia de una clase que hereda IDbConnection.
Las clases que heredan IDbConnection deben implementar todos los miembros heredados y normalmente definir miembros adicionales para agregar funcionalidad específica del proveedor. Por ejemplo, la IDbConnection interfaz define la ConnectionTimeout propiedad . A su vez, la SqlConnection clase hereda esta propiedad y también define la PacketSize propiedad .
Notas a los implementadores
Para promover la coherencia entre los proveedores de datos de .NET Framework, asigne un nombre a la clase heredada en el formulario PrvClassname
donde Prv
es el prefijo uniforme proporcionado a todas las clases de un espacio de nombres específico del proveedor de datos de .NET Framework. Por ejemplo, Sql
es el prefijo de la SqlConnection clase en el System.Data.SqlClient
espacio de nombres .
Al heredar de la IDbConnection interfaz, debe implementar los siguientes constructores:
Elemento | Descripción |
---|---|
PrvConnection() | Inicializa una nueva instancia de la clase PrvConnection. |
PrvConnection(string connectionString) | Inicializa una nueva instancia de la clase PrvConnection cuando se le asigna una cadena que contiene el cadena de conexión. |
Propiedades
ConnectionString |
Obtiene o establece la cadena que se utiliza para abrir una base de datos. |
ConnectionTimeout |
Obtiene el tiempo de espera (en segundos) mientras se intenta establecer una conexión antes de que se interrumpa el intento y se genere un error. |
Database |
Obtiene el nombre de la base de datos actual o de la que se va a utilizar una vez que se abre la conexión. |
State |
Obtiene el estado actual de la conexión. |
Métodos
BeginTransaction() |
Inicia una transacción de base de datos. |
BeginTransaction(IsolationLevel) |
Inicia una transacción de base de datos con el valor de IsolationLevel especificado. |
ChangeDatabase(String) |
Cambia la base de datos actual para un objeto |
Close() |
Cierra la conexión con la base de datos. |
CreateCommand() |
Crea y devuelve un objeto Command asociado a la conexión. |
Dispose() |
Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados. (Heredado de IDisposable) |
Open() |
Abre una conexión de base de datos con la configuración especificada por la propiedad |