IDbConnection Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vertegenwoordigt een open verbinding met een gegevensbron en wordt geïmplementeerd door .NET gegevensproviders die toegang hebben tot relationele databases.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Afgeleid
- Implementeringen
Voorbeelden
In het volgende voorbeeld worden exemplaren van de afgeleide klassen gemaakt, SqlCommand en SqlConnection. De SqlConnection wordt geopend en ingesteld als de Connection voor de SqlCommand. Het voorbeeld roept ExecuteNonQueryvervolgens aan en sluit de verbinding. Hiervoor wordt de ExecuteNonQuery doorgegeven aan een verbindingsreeks en een queryreeks die een Transact-SQL INSERT-instructie is.
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
Opmerkingen
Met de IDbConnection interface kan een overnemende klasse een verbindingsklasse implementeren, die een unieke sessie vertegenwoordigt met een gegevensbron (bijvoorbeeld een netwerkverbinding met een server). Zie Verbinding maken met een gegevensbron voor meer informatie over verbindingsklassen.
Een toepassing maakt geen exemplaar van de IDbConnection interface rechtstreeks, maar maakt een exemplaar van een klasse die wordt overgenomen IDbConnection.
Klassen die overnemen IDbConnection , moeten alle overgenomen leden implementeren en definiëren doorgaans aanvullende leden om providerspecifieke functionaliteit toe te voegen. De IDbConnection interface definieert bijvoorbeeld de ConnectionTimeout eigenschap. De klasse neemt deze eigenschap over SqlConnection en definieert ook de PacketSize eigenschap.
Notities voor uitvoerders
Als u consistentie tussen .NET Framework-gegevensproviders wilt bevorderen, geeft u de overnemende klasse een naam in de vorm PrvClassname waarbij Prv het uniforme voorvoegsel is dat aan alle klassen in een specifieke naamruimte van .NET Framework-gegevensprovider wordt gegeven. Is bijvoorbeeld Sql het voorvoegsel van de SqlConnection klasse in de System.Data.SqlClient naamruimte.
Wanneer u de IDbConnection interface over neemt, moet u de volgende constructors implementeren:
| Artikel | Beschrijving |
|---|---|
| PrvConnection() | Initialiseert een nieuw exemplaar van de klasse PrvConnection. |
| PrvConnection(string connectionString) | Initialiseert een nieuw exemplaar van de Klasse PrvConnection wanneer een tekenreeks met de verbindingsreeks wordt gegeven. |
Eigenschappen
| Name | Description |
|---|---|
| ConnectionString |
Hiermee haalt u de tekenreeks op die wordt gebruikt om een database te openen of stelt u deze in. |
| ConnectionTimeout |
Hiermee krijgt u de tijd die moet worden gewacht (in seconden) tijdens het tot stand brengen van een verbinding voordat u de poging beëindigt en een fout genereert. |
| Database |
Hiermee haalt u de naam op van de huidige database of de database die moet worden gebruikt nadat een verbinding is geopend. |
| State |
Hiermee haalt u de huidige status van de verbinding op. |
Methoden
| Name | Description |
|---|---|
| BeginTransaction() |
Begint een databasetransactie. |
| BeginTransaction(IsolationLevel) |
Hiermee begint u een databasetransactie met de opgegeven IsolationLevel waarde. |
| ChangeDatabase(String) |
Hiermee wijzigt u de huidige database voor een geopend |
| Close() |
Hiermee sluit u de verbinding met de database. |
| CreateCommand() |
Hiermee maakt en retourneert u een opdrachtobject dat is gekoppeld aan de verbinding. |
| Dispose() |
Voert door de toepassing gedefinieerde taken uit die zijn gekoppeld aan het vrijmaken, vrijgeven of opnieuw instellen van onbeheerde resources. (Overgenomen van IDisposable) |
| Open() |
Hiermee opent u een databaseverbinding met de instellingen die zijn opgegeven door de |