IDbConnection Interfész
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy adatforráshoz való nyílt kapcsolatot jelöl, és .NET relációs adatbázisokhoz hozzáférő adatszolgáltatók implementálják.
public interface class IDbConnection : IDisposable
public interface IDbConnection : IDisposable
type IDbConnection = interface
interface IDisposable
Public Interface IDbConnection
Implements IDisposable
- Származtatott
- Megvalósítás
Példák
Az alábbi példa létrehozza a származtatott osztályok példányait és SqlCommandSqlConnectiona . A SqlConnection rendszer meg van nyitva, és a Connection következő értékre SqlCommandvan állítva: . A példa ezután meghívja ExecuteNonQuery, majd bezárja a kapcsolatot. Ehhez a ExecuteNonQuery kapcsolati karakterlánc és egy Transact-SQL INSERT utasítást tartalmazó lekérdezési sztring lesz átadva.
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
Megjegyzések
Az IDbConnection interfész lehetővé teszi, hogy egy öröklő osztály implementáljon egy kapcsolatosztályt, amely egy egyedi munkamenetet jelöl egy adatforrással (például egy kiszolgálóhoz való hálózati kapcsolattal). További információ a kapcsolatosztályokról: Csatlakozás adatforráshoz.
Az alkalmazás nem hozza létre közvetlenül a IDbConnection felület egy példányát, hanem egy öröklő osztály egy példányát IDbConnectionhozza létre.
Az öröklő IDbConnection osztályoknak az összes örökölt tagot implementálniuk kell, és általában további tagokat kell meghatározniuk a szolgáltatóspecifikus funkciók hozzáadásához. Például a IDbConnection felület határozza meg a tulajdonságot ConnectionTimeout . Az osztály viszont SqlConnection örökli ezt a tulajdonságot, és meghatározza a tulajdonságot PacketSize is.
Megjegyzések az implementálókhoz
A .NET keretrendszer adatszolgáltatói közötti konzisztencia előmozdításához nevezze el az öröklő osztályt PrvClassname formában, ahol Prv egy adott .NET keretrendszer adatszolgáltatójának névterében lévő összes osztály egységes előtagja. Például Sql az osztály előtagja SqlConnection a System.Data.SqlClient névtérben.
Ha a IDbConnection felületről örököl, a következő konstruktorokat kell implementálnia:
| Cikk | Leírás |
|---|---|
| PrvConnection() | Inicializálja a PrvConnection osztály új példányát. |
| PrvConnection(string connectionString) | Inicializálja a PrvConnection osztály új példányát, ha a kapcsolati karakterlánc tartalmazó sztringet ad meg. |
Tulajdonságok
| Name | Description |
|---|---|
| ConnectionString |
Lekéri vagy beállítja az adatbázis megnyitásához használt sztringet. |
| ConnectionTimeout |
Lekéri a várakozási időt (másodpercben), miközben megpróbál kapcsolatot létesíteni, mielőtt megszakítja a kísérletet, és hibát okozna. |
| Database |
Lekéri az aktuális adatbázis vagy a kapcsolat megnyitása után használni kívánt adatbázis nevét. |
| State |
Lekéri a kapcsolat aktuális állapotát. |
Metódusok
| Name | Description |
|---|---|
| BeginTransaction() |
Adatbázis-tranzakciót indít el. |
| BeginTransaction(IsolationLevel) |
Elindít egy adatbázis-tranzakciót a megadott IsolationLevel értékkel. |
| ChangeDatabase(String) |
Egy megnyitott |
| Close() |
Bezárja a kapcsolatot az adatbázissal. |
| CreateCommand() |
Létrehoz és visszaad egy, a kapcsolathoz társított parancsobjektumot. |
| Dispose() |
Végrehajtja a nem felügyelt erőforrások felszabadításával, felszabadításával vagy alaphelyzetbe állításával kapcsolatos alkalmazásalapú feladatokat. (Öröklődés forrása IDisposable) |
| Open() |
Adatbázis-kapcsolatot nyit meg a szolgáltatóspecifikus kapcsolatobjektum tulajdonsága által |