| |

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 |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 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
|
|