IDbConnection Interfejs
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje otwarte połączenie ze źródłem danych i jest implementowane przez dostawców danych platformy .NET, którzy uzyskują dostęp do relacyjnych baz danych.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Pochodne
- Implementuje
Przykłady
Poniższy przykład tworzy wystąpienia klas SqlCommand pochodnych i SqlConnection. Właściwość SqlConnection jest otwierana i ustawiana jako Connection dla elementu SqlCommand. W tym przykładzie wywołamy ExecuteNonQuerymetodę , a następnie zamkniemy połączenie. W tym ExecuteNonQuery celu parametr połączenia jest przekazywany i parametry zapytania, które są instrukcją 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
Uwagi
Interfejs IDbConnection umożliwia dziedziczącą klasę implementowania klasy Connection, która reprezentuje unikatową sesję ze źródłem danych (na przykład połączenie sieciowe z serwerem). Aby uzyskać więcej informacji na temat klas połączeń, zobacz Łączenie ze źródłem danych.
Aplikacja nie tworzy bezpośrednio wystąpienia interfejsuIDbConnection, ale tworzy wystąpienie klasy dziedziczonej .IDbConnection
Klasy dziedziczone IDbConnection muszą implementować wszystkie dziedziczone elementy członkowskie i zazwyczaj definiują dodatkowe elementy członkowskie w celu dodania funkcji specyficznych dla dostawcy. Na przykład IDbConnection interfejs definiuje ConnectionTimeout właściwość . Z kolei SqlConnection klasa dziedziczy tę właściwość, a także definiuje PacketSize właściwość .
Notatki dotyczące implementowania
Aby promować spójność wśród dostawców danych programu .NET Framework, nazwij klasę dziedziczącą w postaci PrvClassname , w której Prv jest jednolity prefiks podany dla wszystkich klas w określonej przestrzeni nazw dostawcy danych programu .NET Framework. Na przykład Sql jest prefiksem SqlConnection klasy w System.Data.SqlClient przestrzeni nazw.
Po dziedziczeniu z interfejsu IDbConnection należy zaimplementować następujące konstruktory:
| Przedmiot | Opis |
|---|---|
| PrvConnection() | Inicjuje nowe wystąpienie klasy PrvConnection. |
| PrvConnection(parametry connectionString) | Inicjuje nowe wystąpienie klasy PrvConnection, gdy podane parametry połączenia zawierają parametry połączenia. |
Właściwości
| Nazwa | Opis |
|---|---|
| ConnectionString |
Pobiera lub ustawia ciąg używany do otwierania bazy danych. |
| ConnectionTimeout |
Pobiera czas oczekiwania (w sekundach) podczas próby nawiązania połączenia przed zakończeniem próby i wygenerowaniem błędu. |
| Database |
Pobiera nazwę bieżącej bazy danych lub bazy danych do użycia po otwarciu połączenia. |
| State |
Pobiera bieżący stan połączenia. |
Metody
| Nazwa | Opis |
|---|---|
| BeginTransaction() |
Rozpoczyna transakcję bazy danych. |
| BeginTransaction(IsolationLevel) |
Rozpoczyna transakcję bazy danych z określoną IsolationLevel wartością. |
| ChangeDatabase(String) |
Zmienia bieżącą bazę danych dla otwartego |
| Close() |
Zamyka połączenie z bazą danych. |
| CreateCommand() |
Tworzy i zwraca obiekt Command skojarzony z połączeniem. |
| Dispose() |
Wykonuje zadania zdefiniowane przez aplikację skojarzone z zwalnianiem, wydawaniem lub resetowaniem niezarządzanych zasobów. (Odziedziczone po IDisposable) |
| Open() |
Otwiera połączenie bazy danych z ustawieniami określonymi przez |