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. Element SqlConnection jest otwarty i ustawiany jako Connection dla .SqlCommand Następnie przykład wywołuje ExecuteNonQuerymetodę i zamyka połączenie. W tym ExecuteNonQuery celu parametr jest przekazywany parametry połączenia i ciąg zapytania, który jest 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 dziedziczonej klasie zaimplementowanie 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 interfejsu IDbConnection , ale tworzy wystąpienie klasy dziedziczonej IDbConnection.
Klasy dziedziczone IDbConnection muszą implementować wszystkie dziedziczone elementy członkowskie i zwykle 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ść .
Uwagi dotyczące implementowania
Aby podwyższyć spójność między dostawcami danych .NET Framework, nazwij klasę dziedzicującą w postaciPrvClassname
, w której Prv
jest jednolity prefiks nadany wszystkim klasom w określonej przestrzeni nazw dostawcy danych .NET Framework. Na przykład Sql
jest prefiksem SqlConnection klasy w System.Data.SqlClient
przestrzeni nazw.
Podczas dziedziczenia z interfejsu IDbConnection należy zaimplementować następujące konstruktory:
Element | Opis |
---|---|
PrvConnection() | Inicjuje nowe wystąpienie klasy PrvConnection. |
PrvConnection(parametry connectionString) | Inicjuje nowe wystąpienie klasy PrvConnection, gdy zostanie podany ciąg zawierający parametry połączenia. |
Właściwości
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
BeginTransaction() |
Rozpoczyna transakcję bazy danych. |
BeginTransaction(IsolationLevel) |
Rozpoczyna transakcję bazy danych o określonej 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 zdefiniowane przez aplikację zadania skojarzone ze zwalnianiem lub resetowaniem zasobów niezarządzanych. (Odziedziczone po IDisposable) |
Open() |
Otwiera połączenie bazy danych z ustawieniami określonymi przez |