Einzelnen Beitrag anzeigen

Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#8

Re: TSQLiteDatabase: A SQLite3 Database Wrapper

  Alt 2. Okt 2009, 08:44


Das Dingens gefällt mir mittlerweile richtig gut, die Bedienung ist simpel und einfach, und dank nonVCL-Fähigkeiten auch für solche Programme geeignet. Dennoch ist mir die Geschwindigkeit negativ aufgefallen. Folgendes Konstrukt:

Delphi-Quellcode:
  procedure TDatabase.AddFile(FileSpecs: TFileSpecs);
  var
    FileCmd: TSQLiteCommand;
  begin
    FileCmd := fDB.Command('INSERT INTO FILES (FILE_PATH, FILE_EXT, FILE_TITLE, FILE_ARTIST, FILE_ALBUM, FILE_YEAR, FILE_GENRE, FILE_LENGTH) ' +
                        'VALUES ( ? , ? , ? , ? , ? , ? , ? , ? );');
    FileCmd.Binding[1].AsString := FileSpecs.fFilePath;
    FileCmd.Binding[2].AsString := FileSpecs.fFileExtType;
    FileCmd.Binding[3].AsString := FileSpecs.fTitle;
    FileCmd.Binding[4].AsString := FileSpecs.fArtist;
    FileCmd.Binding[5].AsString := FileSpecs.fAlbum;
    FileCmd.Binding[6].AsString := FileSpecs.fYear;
    FileCmd.Binding[7].AsString := FileSpecs.fGenre;
    FileCmd.Binding[8].AsInteger := FileSpecs.fLength;
    FileCmd.Execute;
    FileCmd.Free;
  end;
~100 Einträge hinzuzufügen dauert fast 10 Sekunden, imho zu langsam. Ich habe schon, wie von Zeos gewohnt, das Erstellen das Objekts "FileCmd" ausgelagert, und nur noch den Teil mit "FileCmd.Binding[n].AsXYZ" sowie den Execute-Teil drin gelassen. Dann rennt er da zwar durch, aber fügt auch nichts zur DB hinzu. Mache ich irgendwas falsch?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat