| |

ADO.NET / DatenbankenZeitfressende SQLite-Datenbank | |  | Autor: Bitschieber | Datum: 23.06.08 13:25 |
| Hallo Forum,
ich habe ein Problem, zu dem ich trotz Forumsuche leider keine Lösung fand und nun gediegen ratlos bin:
Ich hatte mir unter Access2003 eine kleine Datenbank geschrieben, die meine MP3-Sammlung verwaltet. Hierzu habe ich mit der Dll "Audiogenie" von Stefan Töngi die Tag-Infos (14 Infos) ausgelesen und in mehreren Tabellen abgespeichert. Auf meinem ALt-PC (AMD Athlon XP 2800, 512MB RAM, Win2k mit SP4, Office 2003 mit SP3) brauchte die DB für das Einlesen der Tag-Infos von meiner Sammlung (ca. 30.000 MP3-Files) etwa 7min - zufriedenstellend.
Da sich nun einige Kollegen dafür interessierten, wollte ich die DB unter VB2005 Express umsetzen, damit sie auch ohne Access läuft. Als Datenbank verwende ich SQLite, da ich mehrfach gelesen habe, dass sie rasend schnell sein soll.
Und jetzt kommts:
Auf meinem Notebook (Acer Travelmate5520, AMD-Turion DualCore 1,9GHz, WinXP Home mit SP3, 1GBRam, VB2005Express mit SP1) nudelte mein Progrämmchen an einem Verzeichnis mit 100 MP3-Files ca. 1min rum!!!!
Auf der Suche nach dem Zeitfresser habe ich die SQLite-DB ausgemacht und sie einem kleinen Test unterzogen (TabTest ist eine 2-spaltige Tabelle in der SQLite-DB ohne Index; beide Spalten als VarChar(100))
Imports System
Imports System.IO
Imports System.Data.Sqlite
Modul Versuch
Sub Test()
Dim SQLConnStr As String = "DataSource = Verbindung zur DB"
Dim SQLConn As New SQLite.SQLiteConnection(SQLConnStr)
Dim SQLComm As New SOLite.SQLiteCommand("String", SQLConn)
Dim DA As New SQLite.SQLiteDataAdapter(SQLComm)
Dim DS As New DataSet, X As Integer
Dim iTime as New System.Diagnostics.Stopwatch
iTime.Start()
'*********
SQLConn.Open()
For X = 0 To 1000
SQLComm.CoammandText = "INSERT INTO TabTest VALUES ('abcdefghijklmnop'," & _
"'wertzuiopasdfghjklö')"
SQLComm.ExecuteNonQuery()
Next
SQLConn.Close()
'*********
iTime.Stop()
MsgBox(iTime.ElapsedMilliseconds)
iTime.Reset()
End Sub
End Modul Nach dem Schreiben der 1001 Zeilen wird in der MsgBox die Zahl 128935 angezeigt - die DB hat also für diese kleinen Datenmenge satte zwei Minuten gebraucht!
Wenn ich den Quellcode zwischen den Sternchen durch folgenden ersetze:
'*********
SQLComm.CoammandText = "SELECT * FROM TabTest"
DA.Fill(DS)
Dim tbl as DataTable = DS.Tables(0)
Dim row as DataRow = tbl.NewRow()
For X = 0 To 1000
row(Spalte1) = "abcdefghijklmnop" & X
row(Spalte2) = "wertzuiopasdfghjklö"
tbl.Rows.Add()
Next
iTime.Stop()
MsgBox(iTime.ElapsedMilliseconds)
Dim Cmd As New SQLite.SQLiteCommandBuilder
DA.Update(DS)
'********* Dann werden mir in der ersten MsgBox 14 angezeigt (ganz ordentlich - so sollte es sein) und in der zweiten 111009, d.h. die SQLite-DB hat wieder fast 2min genudelt! Ausserdem sind die Datenzeilen leer, d.h wenn ich mir TabTest ansehe, dann stehen da nur Null-Werte. Woher kommt denn das?
Ich weiß leider nicht weiter und bitte um Hilfe - schon mal vielen Dank
Bitschieber |  |
 | 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 |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|