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?