vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
da.Fill(dt) zu langsam 
Autor: Fex
Datum: 30.11.11 10:40

Hallo,

ich hole auf die folgende Art und Weise (ADO.NET) Daten aus einer Access-Datenbank (.mdb):

    Public dbconn As OleDbConnection
    Public cmd As New OleDbCommand
    Public da As New OleDbDataAdapter()
    Public dt As New DataTable
 
    Public Function getData(sql As String, Optional dbPath As String = "") As _
      DataTable
        Try
            Dim connectionstring As String = ""
            Dim cmd As New OleDbCommand
 
            If dbconn Is Nothing OrElse dbconn.State <> ConnectionState.Open Then
                dbconn = New OleDbConnection
                'Datenbank auswählen
                If dbPath = "" Then
                    dbPath = _iniDatabasePath
                End If
 
                'Connection-String definieren
                If dbPath.ToLower.EndsWith(".mdb") Then
                    connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Data" & _
                      "Source=" & dbPath & ";"
                ElseIf dbPath.ToLower.EndsWith(".accdb") Then
                    connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0; Data" & _
                      "Source=" & dbPath & ";"
                Else
                    Return Nothing
                End If
 
                dbconn.ConnectionString = connectionstring
                dbconn.Open()
 
                da = New OleDbDataAdapter
                dt = New DataTable
            End If
 
            'Daten holen und als DataTable zurückgeben
            cmd.CommandText = sql
            da.SelectCommand = cmd
            da.Fill(dt) '-> PROBLEMZONE
            Return dt
        Catch ex As Exception
            Return Nothing
        End Try
    End Function
Solange ich die gleiche Datenbank verwende, ist die Connection dbconn immer geöffnet. Das funktioniert auch soweit.

Wenn ich nun aber diese Funktion debugge und eine einfache SQL-Anweisung (z.B. SELECT * FROM Tabelle) auf eine kleine Tabelle anwende, dann verbringt der Debugger die meiste Zeit in der Zeile da.Fill(dt).

Bei wiederholtem Aufruf mit etwas variierenden SQL-Anweisungen wird das VB.Net-Programm gegenüber einer VB6-Anwendung dadurch aber extrem langsam.

Gibt es hier eine Möglichkeit, dies zu beschleunigen? Der Weg über ein DataReader-Objekt geht nicht, da eine vorwärtsgerichtete Leserichtung hinderlich ist.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
da.Fill(dt) zu langsam2.919Fex30.11.11 10:40
Re: da.Fill(dt) zu langsam2.239ModeratorFZelle30.11.11 14:26
Re: da.Fill(dt) zu langsam2.171Fex30.11.11 14:54
Re: da.Fill(dt) zu langsam2.137ModeratorFZelle30.11.11 23:38

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel