IDbConnection Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje otevřené připojení ke zdroji dat a implementují zprostředkovatelé dat .NET, kteří přistupují k relačním databázím.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Odvozené
- Implementuje
Příklady
Následující příklad vytvoří instance odvozených tříd SqlCommand a SqlConnection. Otevře SqlConnection se a nastaví se jako Connection pro SqlCommand. Příklad pak zavolá ExecuteNonQuerya ukončí připojení. K tomu ExecuteNonQuery se předá připojovací řetězec a řetězec dotazu, který je příkazem 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
Poznámky
Rozhraní IDbConnection umožňuje dědící třídě implementovat třídu Connection, která představuje jedinečnou relaci se zdrojem dat (například síťové připojení k serveru). Další informace o třídách připojení najdete v tématu Připojení ke zdroji dat.
Aplikace nevytvoří instanci IDbConnection rozhraní přímo, ale vytvoří instanci třídy, která dědí IDbConnection.
Třídy, které dědí IDbConnection , musí implementovat všechny zděděné členy a obvykle definovat další členy pro přidání funkcí specifických pro zprostředkovatele. IDbConnection Například rozhraní definuje ConnectionTimeout vlastnost. Naopak SqlConnection třída dědí tuto vlastnost a také definuje PacketSize vlastnost.
Poznámky pro implementátory
Chcete-li zvýšit konzistenci mezi zprostředkovateli dat rozhraní .NET Framework, pojmenujte dědící třídu ve formátu PrvClassname
, kde Prv
je jednotná předpona přidělená všem třídám v určitém oboru názvů zprostředkovatele dat rozhraní .NET Framework. Je například Sql
předponou SqlConnection třídy v System.Data.SqlClient
oboru názvů.
Při dědění z IDbConnection rozhraní byste měli implementovat následující konstruktory:
Položka | Popis |
---|---|
PrvConnection() | Inicializuje novou instanci PrvConnection třídy. |
PrvConnection(řetězec connectionString) | Inicializuje novou instanci PrvConnection třídy při zadání řetězce obsahujícího připojovací řetězec. |
Vlastnosti
ConnectionString |
Získá nebo nastaví řetězec použitý k otevření databáze. |
ConnectionTimeout |
Získá čas čekání (v sekundách) při pokusu o navázání připojení před ukončením pokusu a generování chyby. |
Database |
Získá název aktuální databáze nebo databáze, která se má použít po otevření připojení. |
State |
Získá aktuální stav připojení. |
Metody
BeginTransaction() |
Zahájí transakci databáze. |
BeginTransaction(IsolationLevel) |
Zahájí databázi transakce se zadanou IsolationLevel hodnotou. |
ChangeDatabase(String) |
Změní aktuální databázi otevřeného |
Close() |
Ukončí připojení k databázi. |
CreateCommand() |
Vytvoří a vrátí objekt Command přidružený k připojení. |
Dispose() |
Provede aplikací definované úlohy spojené s uvolněním nebo resetováním nespravovaných prostředků. (Zděděno od IDisposable) |
Open() |
Otevře připojení k databázi s nastavením určeným |