Nyelv

IDbConnection Interfész

Definíció

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 Connection objektum aktuális adatbázisának módosítása.

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 ConnectionString megadott beállításokkal.

A következőre érvényes: