Moin,
ich habe eine DB die noch relativ klein ist (Erstmal zum Testen, hat somit nur 7 Datensätze)
So, also mein Code zusammen gebastelt damit ich eine kleine "Suchfunktion" habe -> Keine Probleme, läuft alles 1a
Dann weiter im Text: Zwei Funktionen (Ich sag mal: "main_func" und "get_data")
"main_func" enthält eine For-Next-Schleife und in dieser Schleife wird die Funktion "reader" ausgeben die mir bestimmte Teile der DB ausgibt (Mit dem Ergebnis wird dann mit in weiteren Funktionen verabeitet, hat aber nichts mehr mit der DB zu tun)
Anfangs kein Problem, hab zum testen auch zwischen jedem Aufruf eine Thread.Sleep mit 100ms
Nachdem aber ~60x auf die DB Zugeriffen wurde heißt es: "Unbekannter Fehler"
So hier mal die relevanten Schnippsel:
Spoiler anzeigen
Der Fehler taucht in Zeile 17 auf
Leider hab ich keine Ahnung wie ich damit umgehen soll bzw. diesen Fehler verhindern kann
Weiß jemand weiter?
Und bevor ich es vergesse: Das mit Multi ist absichtlich so
Wenn ich das ohne meiner komischer Multi-Verzweigung mache brauche ich so ~50-100ms zum lesen
Mit dem Mulit sind es so ~5-15ms (Und das ist ein deutlicher Unterschied)
Natürlich wird beim letzten Aufruf das Multi auf False gesetzt
Mfg.
SAR
ich habe eine DB die noch relativ klein ist (Erstmal zum Testen, hat somit nur 7 Datensätze)
So, also mein Code zusammen gebastelt damit ich eine kleine "Suchfunktion" habe -> Keine Probleme, läuft alles 1a
Dann weiter im Text: Zwei Funktionen (Ich sag mal: "main_func" und "get_data")
"main_func" enthält eine For-Next-Schleife und in dieser Schleife wird die Funktion "reader" ausgeben die mir bestimmte Teile der DB ausgibt (Mit dem Ergebnis wird dann mit in weiteren Funktionen verabeitet, hat aber nichts mehr mit der DB zu tun)
Anfangs kein Problem, hab zum testen auch zwischen jedem Aufruf eine Thread.Sleep mit 100ms
Nachdem aber ~60x auf die DB Zugeriffen wurde heißt es: "Unbekannter Fehler"
So hier mal die relevanten Schnippsel:
VB.NET-Quellcode
- Public Function get_data(ByRef Name As String, ByRef Multi As Boolean) As Object
- '// Verbindung herstellen:
- '//Step 1: Deklarieren
- Dim con As New OleDb.OleDbConnection
- Dim cmd As New OleDb.OleDbCommand
- Dim reader As OleDb.OleDbDataReader
- Dim datas As Object
- Dim sw As Stopwatch = Stopwatch.StartNew
- '//Step 2: Laden der DB
- con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & db_location & ";Persist Security Info=False;"
- cmd.Connection = con
- '//Step 3: Lesen der DB
- con.Open()
- cmd.CommandText = "select * from tabelle1"
- reader = cmd.ExecuteReader
- Dim stb As New System.Text.StringBuilder
- Do While reader.Read
- If reader("wert") = Name Then
- stb.Append(reader("wert") & ";")
- stb.Append(reader("typ") & ";")
- stb.Append(reader("p1") & ";" & reader("p2") & ";" & reader("p3") & ";" & reader("p4") & ";" & reader("p4") & ";" & reader("p5") & ";" _
- & reader("p6") & ";" & reader("p7") & ";")
- stb.Append(reader("com"))
- If Not Multi Then
- con.Close()
- End If
- Exit Do
- End If
- Loop
- If Not stb.ToString = "" Then
- datas = Split(stb.ToString, ";")
- sw.Stop()
- datas(10) = sw.ElapsedMilliseconds
- Return datas
- Exit Function
- End If
- sw.Stop()
- Dim err(1) As String
- err(0) = "unkown"
- err(1) = sw.ElapsedMilliseconds
- Return err
- End Function
Der Fehler taucht in Zeile 17 auf
Leider hab ich keine Ahnung wie ich damit umgehen soll bzw. diesen Fehler verhindern kann
Weiß jemand weiter?
Und bevor ich es vergesse: Das mit Multi ist absichtlich so
Wenn ich das ohne meiner komischer Multi-Verzweigung mache brauche ich so ~50-100ms zum lesen
Mit dem Mulit sind es so ~5-15ms (Und das ist ein deutlicher Unterschied)
Natürlich wird beim letzten Aufruf das Multi auf False gesetzt
Mfg.
SAR
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SAR-71“ ()