IDbConnection Gränssnitt
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en öppen anslutning till en datakälla och implementeras av .NET dataleverantörer som har åtkomst till relationsdatabaser.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Härledda
- Implementeringar
Exempel
I följande exempel skapas instanser av de härledda klasserna SqlCommand och SqlConnection. SqlConnection Öppnas och anges som Connection för SqlCommand. Exemplet anropar ExecuteNonQuerysedan och stänger anslutningen. För att åstadkomma detta skickas ExecuteNonQuery en reťazec pripojenia och en frågesträng som är en Transact-SQL INSERT-instruktion.
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
Kommentarer
Gränssnittet IDbConnection gör det möjligt för en ärvande klass att implementera en anslutningsklass, som representerar en unik session med en datakälla (till exempel en nätverksanslutning till en server). Mer information om anslutningsklasser finns i Ansluta till en datakälla.
Ett program skapar inte en instans av IDbConnection gränssnittet direkt, men skapar en instans av en klass som ärver IDbConnection.
Klasser som ärver IDbConnection måste implementera alla ärvda medlemmar och vanligtvis definiera ytterligare medlemmar för att lägga till providerspecifika funktioner. Gränssnittet definierar ConnectionTimeout till exempel IDbConnection egenskapen. Klassen ärver i sin tur den SqlConnection här egenskapen och definierar PacketSize även egenskapen.
Anteckningar till implementerare
Om du vill främja konsekvens mellan .NET Framework-dataprovidrar namnger du ärvningsklassen i formuläret PrvClassname där Prv är det enhetliga prefix som ges till alla klasser i ett specifikt .NET Framework-dataprovidernamnområde. Är till exempel Sql prefixet för SqlConnection klassen i System.Data.SqlClient namnområdet.
När du ärver från IDbConnection gränssnittet bör du implementera följande konstruktorer:
| Artikel | Beskrivning |
|---|---|
| PrvConnection() | Initierar en ny instans av klassen PrvConnection. |
| PrvConnection(string connectionString) | Initierar en ny instans av klassen PrvConnection när du får en sträng som innehåller reťazec pripojenia. |
Egenskaper
| Name | Description |
|---|---|
| ConnectionString |
Hämtar eller anger strängen som används för att öppna en databas. |
| ConnectionTimeout |
Hämtar tid att vänta (i sekunder) när du försöker upprätta en anslutning innan du avslutar försöket och genererar ett fel. |
| Database |
Hämtar namnet på den aktuella databasen eller databasen som ska användas när en anslutning har öppnats. |
| State |
Hämtar det aktuella tillståndet för anslutningen. |
Metoder
| Name | Description |
|---|---|
| BeginTransaction() |
Påbörjar en databastransaktion. |
| BeginTransaction(IsolationLevel) |
Påbörjar en databastransaktion med det angivna IsolationLevel värdet. |
| ChangeDatabase(String) |
Ändrar den aktuella databasen för ett öppet |
| Close() |
Stänger anslutningen till databasen. |
| CreateCommand() |
Skapar och returnerar ett kommandoobjekt som är associerat med anslutningen. |
| Dispose() |
Utför programdefinierade uppgifter som är associerade med att frigöra, frigöra eller återställa ohanterade resurser. (Ärvd från IDisposable) |
| Open() |
Öppnar en databasanslutning med de inställningar som anges av |