SQLAdapter Tabellen.

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Rattenfänger.

    SQLAdapter Tabellen.

    Hallo,

    ich habe mal eine grundlegende frage zum SQLAdapter.
    Ich habe eine SQLDatenbank in der verschiedene Tabellen sind.
    Nun möchte ich diese Tabellen, während der Laufzeit in ein nicht Typisiertes Dataset einlesen, die Tabellen mit Daten befüllen und später auf dem Server updaten.

    Brauche ich nun für jede Tabelle einen eigenen TableAdapter?

    Gruß
    Nein. Man kann mit einem CommandBuilder zur Laufzeit jeden DataAdapter so einrichten, dasser auf die Tabelle passt, für die er vorgesehen ist.
    Ist etwas unperformant, weil der CommandBuilder ruft bei erstmaligem Datenabruf die MetaDaten (also das Schema) der Tabelle ab, um Delete, Insert, Update-Command einzurichten.
    Also Einrichten des DataAdapters mit CommandBuilder kostet selbst einen DB-Zugriff.
    Ist vom Code hger bisserl kranke Hexerei:

    VB.NET-Quellcode

    1. Dim myAdapter=new SqlDataAdapter("Select * from Tabelle1")
    2. Dim cmb=new SqlCommandBuilder(myAdapter)
    3. 'Im Folgenden wird cmb nie wieder gebraucht, darf aber auch nicht disposed werden.
    Wg performance empfehlenswert, die DataAdapter zu cashen, also zB ein Dictionary(Of String, SqlDataAdapter) sukzessive zu befüllen, und nur dann einen neuen SqlDataAdapter erstellen und einrichten, wenn eine bisher unverwendete Tabelle abgerufen werden soll.
    (Syntax ist aussm Kopf, also glaub falsch - da muss iwie noch die Connection eingefrickelt werden.
    Auch hier empfehlenswert, nur ein Connection-Objekt zu erstellen, und wiederzuverwenden.)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ok ich habe ein List(of sqldataadapter) genommen. Gibt es einen unterschied zwischen Dictionary und list.
    habe ich die möglichkeit den namen der tabelle aus dem adapter zu lesen?

    Danke für die schnelle antwort.

    Gruß
    uiih - Dictionary(Of TKey, TValue) sollteste kennen (und lieben).
    Ein Dictionary(Of TKey, TValue) ist - wie der Name sagt - ein "Wörterbuch".
    Unter einem bestimmten Begriff findeste das, was du haben willst.
    Etwa (bei Dictionary(Of String, DataAdapter) ) könntest du unter einem TabellenNamen einen DataAdapter finden.

    Guck dir das im ObjectBrowser an, insbesondere die TryGet-Methode.
    Vermutlich findeste auf BlackWasp auch gute Tutorials dazu - Dictionary(Of TKey, TValue) ist imo fast so ein MustKnow wie List(Of T).
    @ErfinderDesRades vielen Dank, mal wieder sehr Hilfreich.
    Schaue mir das mal an!!!

    edit:

    War genau das was ich gebraucht habe, hier meine Lösung

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.IO
    3. Imports System.Windows.Forms
    4. Imports System.Linq
    5. Imports System.Data
    6. Imports System.Data.SqlClient
    7. Imports System.Data.Entity
    8. Imports fxcore2
    9. Imports Trading_Calculators
    10. Public Class SQL_Allgemeine_Funktion
    11. Dim ClassSettings_DS As New ClassSettings
    12. Dim SQL_All_Instruments_Table As DataTable
    13. Dim SQL_Connection As New SqlConnection
    14. Dim SQL_AdapterList As New Dictionary(Of String, SqlDataAdapter)
    15. Dim Trading_Calc_ALGFunk As New Trading_Calculators.Allgemeine_Funktionen
    16. Public Sub ConnectToDatabase()
    17. Dim Connection_String As String = "Data Source = *********;Initial Catalog=Historical_Database;Integrated Security=True"
    18. SQL_Connection.ConnectionString = Connection_String
    19. SQL_Connection.Open()
    20. Dim AllTables As DataTable = SQL_Connection.GetSchema("Tables")
    21. For Each SelectedRow As DataRow In AllTables.Rows
    22. If CStr(SelectedRow(2)) Like "*M5" Or CStr(SelectedRow(2)) Like "*M15" Or CStr(SelectedRow(2)) Like "*M30" _
    23. Or CStr(SelectedRow(2)) Like "*M60" Then
    24. Dim Temp_SQL_Adapter As SqlDataAdapter = New SqlDataAdapter("Select * From " & CStr(SelectedRow(2)), SQL_Connection)
    25. SQL_AdapterList.Add(CStr(SelectedRow(2)), Temp_SQL_Adapter)
    26. End If
    27. Next
    28. End Sub
    29. end class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rattenfänger“ ()