![]() |
SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
Moin!
Ich habe noch eine Frage zu mysql abfragen. Und zwar fülle ich ein Listview(VirtualStringTree in diesem Fall) mit sehr vielen Daten aus einer Tabelle, doch das dauert viel zu lange. Hier mal meine Abfrage:
Delphi-Quellcode:
Hat jemand eine Idee wie ich das noch optimieren könnte? Zugegeben, die einzelnen Abfragen sind sehr hässlich.
vstSongs.BeginUpdate;
for I := 0 to Str.Count - 1 do begin Application.ProcessMessages; Song.SongID := StrToInt(Str.Strings[I]); Song.FileName := dbMain.QueryOne('SELECT "filename" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"'); Song.Artist := dbMain.QueryOne('SELECT "artist" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"'); Song.Title := dbMain.QueryOne('SELECT "title" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"'); Song.Album := dbMain.QueryOne('SELECT "album" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"'); Song.TrackNum := StrToInt(dbMain.QueryOne('SELECT "tracknum" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"')); Song.Year := dbMain.QueryOne('SELECT "year" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"'); Song.Genre := dbMain.QueryOne('SELECT "genre" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"'); Song.Rating := StrToInt(dbMain.QueryOne('SELECT "rating" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"')); Song.PlayTime := StrToInt(dbMain.QueryOne('SELECT "playtime" FROM "music" ' + 'WHERE "songid" = "' + Str.Strings[I] + '"')); AddVSTStructure(vstSongs, nil, Song); // lbSongs.Items.Add(Str.Strings[I]); end; vstSongs.EndUpdate; vstSongs.SortTree(3, sdAscending, True); Ich hoffe ihr könnt mir helfen! Gruß, Max |
Re: SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
Mach doch eine Abfrage mit allen Feldern ist um einiges schneller.
BTW. Geht es hier um SqlLite oder MySQL? |
Re: SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
Moin!
Erstmal danke für die schnelle Reaktion. Wie bekomme ich so eine Anfrage zustande?(tut mir leid ich bin auf dem Gebiet erst seit 3 Tagen tätig) Hier geht es um SQLite, sry falls es Missverständnisse gab. Gruß, Max |
Re: SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
SQL-Code:
SELECT "filename", "artist", "Title", ... FROM "music" where ...;
|
Re: SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
Ok, funktioniert.
Danke für deine Hilfe ;) Gruß, Max |
Re: SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
Kenne mich nicht mit dieser Datenbank aus. habe mir mal die Doku zu dem wrapper angesehen. es müßte so gehen:
Delphi-Quellcode:
z.B.
dbMain.Query( <sqlstring>);
dbMain.results[i].ByField['<feldname>'];
Delphi-Quellcode:
Song.FileName := dbMain.results[i].ByField['filename'];
|
Re: SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
Danke mkinzler für deine Mühe!
Ich löse es so:
Delphi-Quellcode:
..Wow ! Ist das schnell!
Song.TrackNum := StrToInt(dbMain.Results[I].AsString[5]);
Danke nochmal! :) Gruß, Max |
Re: SQLite(libsql) 'Ne menge Abfragen...'Ne menge Zeit
Es wird auch pro Durchgang nur noch eine Abfrage an die datenbank gestellt, anstatt 9.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz