vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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
Datenbankinhalt in ein Array speichern, Verbindung bleibt offen, DB locked 
Autor: Turion87
Datum: 29.09.11 14:24

Halo zusammen,

ich habe ein kleines Problem bezüglich meiner Art und Weise meine Datenbank auszulesen.

Zum Hintergrund:

Ich programmier eine Oberfläche, welche Daten aus einer DB ausließt und anzeigt. Diesen Daten stehen in einer Access-Datenbank, die ich von einem FTP downloade und dann bearbeite. Anschließend soll die geladene Datenbank mit der lokalen Version (die zur Laufzeit verwendet wird) überschrieben werden und anschließend wieder auf den FTP hochgeladen werden. --> das hier bitte nicht in Frage stellen und ja ich weiß, für Webapplikationen wäre mySQL besser. Werde ich auch beim nächsten mal machen.

Fakten:

ich erstelle in meiner "Load"-Anweisung eine connection zu meiner Datenbank.

Dim con As New ADODB.Connection (Global)

------------- ;Load Anweisung ----------------

dbpath = System.IO.Path.Combine(Application.StartupPath, "Spieler.mdb")

con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & dbpath
con.Open()



Dann generiere ich während der Laufzeit diverse SQL Statements und lasse diese über eine Funktion ausführen. Diese empfängt das SQL Statement und optional einen Pfad (standarmäßig ist es der Pfad zur lokalen Datenbank)

Das Problem dieser Funktion ist: bei jeder Operation wird eine Connection durch einen Recordset geöffnet, welche sich dann in der "DBname.ldb" niederschlägt.

Hier ist sie

Public Function ReadGame(ByVal strSQL As String, Optional ByVal Pfad As String = "-")
Dim DBTermine As ADODB.Recordset 'Object
Try
If Pfad = "-" Then
Pfad = dbpath
End If

Dim cnn As String
Dim varData As Object
DBTermine = CreateObject("ADODB.Recordset")
cnn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Pfad

DBTermine.Open(strSQL, cnn, 3) ' adOpenStatic = 3 >> Hier ist das Problem. Jeder Aufruf, egal ob Select From oder Insert oder Update.. erzeugt eine neue Connection. Ich könnte auch in jedem Aufruf DBTermine.close und .dispose() anhängen. ABER das sorgt für einen recht großen Zeitaufwand bei vielen Datensätzen...

Dim iNumRows As Integer
iNumRows = DBTermine.RecordCount
iCount = iNumRows
If iCount <> 0 Then
varData = DBTermine.GetRows(iNumRows) >> Diese Zeile ist auch immens wichtig für den Rest meines Codes. Falls es sich um ein "Select" Statement handelt, wird hier der inhalt in ein 2D-Array geschrieben, das muss vorhanden bleiben

Else
ReDim varData(0, 0)
varData(0, 0) = "keine Daten"
End If

Return varData
Catch ex As Exception
' Dim mess As String = ex.ToString
End Try
ende:
End Function



Meine Frage jetzt ist:

1. Wie kann ich es hinbekommen, dass nach irgendwelchen Operationen die Connection zur Datenbank ordentlich geschlossen wird, ohne dass ich zeitliche Einbußen habe. (Vielleicht mit einem Execute Command oder so)

2. Gibt es vielleicht eine andere Möglichkeit eine Access DB auszulesen, Befehle auszuführen und "Select" Statements in 2D arrays zu speichern?



Viele Grüße

Chris [u]
 
[u][u]
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Datenbankinhalt in ein Array speichern, Verbindung bleibt of...1.371Turion8729.09.11 14:24
Re: Datenbankinhalt in ein Array speichern, Verbindung bleib...935ModeratorFZelle29.09.11 15:44
Re: Datenbankinhalt in ein Array speichern, Verbindung bleib...957Turion8729.09.11 21:43
Re: Datenbankinhalt in ein Array speichern, Verbindung bleib...960ModeratorFZelle30.09.11 09:18

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