IDbConnection Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
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à |