Datenzugriff über .net kapseln

Kapselung der Zugriffsmethoden (DAO, ADODB, ODBC)

Datenzugriff über .net kapseln

Beitragvon Josef Pötzl » Mo 23. Dez 2013, 13:03

Hallo!

Ich startete mit der Konvertierung der VBA-Datenzugriffsklassen (DbConnectionHandler.cls, DaoHandler.cls usw.) aus der Access-Code-Library.

Derzeit ist nur eine Grundstruktur enthalten (COM-Sichtbarketi usw. fehlt noch).
Falls jemand Vorschläge zur Strukturierung der Klassen o. ä. hat, bitte hier (oder als neuen Thread in diesem Forum) anmerken oder gleich in den .net-Code einarbeiten.

LG
Josef
Josef Pötzl
Moderator
 
Beiträge: 757
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2010 (2013)

Re: Datenzugriff über .net kapseln

Beitragvon Josef Pötzl » Do 26. Dez 2013, 13:03

Was haltet ihr von dieser Hierarchie?

Facade
  • Frontend/Client (Zugriff über verknüpfte / lokale Tabellen)
    • ADODB (Jet/ACE-SQL-Dialekt - ANSI 92)
      • OpenRecordset
      • Execute
      • ...
    • DAO (Jet/ACE-SQL-Dialekt - ANSI 89)
      • OpenRecordset
      • Execute
      • ...
  • Backend (Direkter Zugriff auf die Backend-Tabellen/Sichten/...)
    • ADODB (SQL-Dialekt des Backends)
      • OpenRecordset
      • Execute
      • ...
    • DAO (direkter Zugriff auf Backend über DAO-Database, Jet/ACE-SQL-Dialekt - ANSI 89)
      • OpenRecordset
      • Execute
      • ...
    • ODBC (Pass Through, SQL-Dialekt des Backends)
      • OpenRecordset
      • Execute
      • ...

mfg
Josef
Josef Pötzl
Moderator
 
Beiträge: 757
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2010 (2013)

Re: Datenzugriff über .net kapseln

Beitragvon Sten Schmidt » Do 20. Feb 2014, 12:48

Hallo Josef,

mit ist noch eine Variante eingefallen: Direktes ADO.NET (System.Data.SqlClient)

Code: Alles auswählen

Public Sub SqlDataReader_ReadTest()

    Dim con As LIB_interop.SqlConnection
    Set con = New LIB_interop.SqlConnection
        con.Init "Server=LOCALHOST\SQLEXPRESS;initial Catalog=MyDB;Integrated Security=true;MultipleActiveResultSets=True;Application Name=.netTest"
        con.Open
       
        Dim tran As LIB_interop.SqlTransaction
        Set tran = con.BeginTransaction
       
            Dim cmd As LIB_interop.SqlCommand
            Set cmd = con.CreateCommand
            Set cmd.Transaction = tran
                cmd.CommandText = "Select TOP (5) Name1 from Kunden;"
           
            Dim reader As LIB_interop.SqlDataReader
            Set reader = cmd.ExecuteReader
       
            While reader.Read
                Debug.Print reader("Name1")
            Wend
                   
            Set reader = Nothing
            tran.Commit
       
        con.Close
   
    Set tran = Nothing
    Set con = Nothing

End Sub

 


Vorteil für mich: ich kann fast 1:1 so programmieren wie in .NET, und ich kann Connection- und Transaction-Objekte an meine .NET-Hilfsklassen übergeben und damit komplexe Operationen direkt auf einer Transaktion ausführen lassen ohne in der DAO- bzw. ADODB-Hölle zu landen.

Die Implementierung des SqlDataReaders war nur ein Test für mich um zu sehen ob es Funktioniert.
Sten Schmidt
Entwickler
 
Beiträge: 139
Registriert: Do 18. Mär 2010, 22:24
Accessversion: 2007, 2010
Access-Erfahrung: Experte


Zurück zu DataConnection

cron