IDbConnection Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine geöffnete Verbindung mit einer Datenquelle dar und wird von den .NET-Datenanbietern implementiert, die auf relationale Datenbanken zugreifen.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Abgeleitet
- Implementiert
Beispiele
Im folgenden Beispiel werden Instanzen der abgeleiteten Klassen erstellt und SqlCommand SqlConnection. Dies SqlConnection wird geöffnet und als für die Connection SqlCommand. Im Beispiel wird dann die Verbindung aufgerufen ExecuteNonQueryund geschlossen. Dazu wird eine ExecuteNonQuery Verbindungszeichenfolge und eine Abfragezeichenfolge übergeben, die eine Transact-SQL INSERT-Anweisung ist.
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
Hinweise
Die IDbConnection Schnittstelle ermöglicht eine erbende Klasse, eine Verbindungsklasse zu implementieren, die eine eindeutige Sitzung mit einer Datenquelle darstellt (z. B. eine Netzwerkverbindung mit einem Server). Weitere Informationen zu Verbindungsklassen finden Sie unter Herstellen einer Verbindung mit einer Datenquelle.
Eine Anwendung erstellt keine Instanz der IDbConnection Schnittstelle direkt, erstellt aber eine Instanz einer Klasse, die erbt IDbConnection.
Klassen, die erben IDbConnection , müssen alle geerbten Member implementieren und in der Regel zusätzliche Member definieren, um anbieterspezifische Funktionen hinzuzufügen. Die Schnittstelle definiert beispielsweise die IDbConnection ConnectionTimeout Eigenschaft. Die Klasse erbt wiederum diese Eigenschaft und definiert auch die SqlConnection PacketSize Eigenschaft.
Hinweise für Ausführende
Um die Konsistenz zwischen .NET Framework Datenanbietern zu fördern, benennen Sie die erbende Klasse in dem FormularPrvClassname
, in Prv
dem das einheitliche Präfix für alle Klassen in einem bestimmten .NET Framework Datenanbieter-Namespace angegeben ist. Beispielsweise Sql
ist das Präfix der SqlConnection Klasse im System.Data.SqlClient
Namespace.
Wenn Sie von der IDbConnection Schnittstelle erben, sollten Sie die folgenden Konstruktoren implementieren:
Element | Beschreibung |
---|---|
PrvConnection() | Initialisiert eine neue Instanz der PrvConnection-Klasse. |
PrvConnection(string connectionString) | Initialisiert eine neue Instanz der PrvConnection-Klasse, wenn eine Zeichenfolge mit der Verbindungszeichenfolge angegeben wird. |
Eigenschaften
ConnectionString |
Ruft die Zeichenfolge ab, mit der eine Datenbank geöffnet wird, oder legt diese fest. |
ConnectionTimeout |
Ruft die Zeit (in Sekunden) ab, die beim Verbindungsaufbau gewartet werden soll, bis der Versuch beendet und ein Fehler generiert wird. |
Database |
Ruft den Namen der aktuellen Datenbank oder der nach dem Öffnen einer Verbindung zu verwendenden Datenbank ab. |
State |
Ruft den aktuellen Zustand der Verbindung ab. |
Methoden
BeginTransaction() |
Beginnt eine Datenbanktransaktion. |
BeginTransaction(IsolationLevel) |
Beginnt eine Datenbanktransaktion mit dem angegebenen IsolationLevel-Wert. |
ChangeDatabase(String) |
Ändert die aktuelle Datenbank für ein offenes |
Close() |
Schließt die Verbindung mit der Datenbank. |
CreateCommand() |
Erstellt ein Command-Objekt, das der Verbindung zugeordnet ist, und gibt dieses zurück. |
Dispose() |
Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. (Geerbt von IDisposable) |
Open() |
Öffnet eine Datenbankverbindung mit den Einstellungen, die durch die |