Delphi-Quellcode:
var i:Integer;
var startzeit,stopzeit : TDateTime;
begin
startzeit := now;
i := 0; // Initialisierung von i
Screen.Cursor := crHourGlass;
ZConnection.Database := 'c:\msql\firedb.fdb';
Zquery1.SQL.Text:='INSERT INTO TestTabelle (Wert1, Wert2) VALUES(:v1, :v2), (:v3, :v4), (:v5, :v6), (:v7, :v8), (:v9, :v10)';
while i <= SG1.RowCount-1 do
begin
with ZQuery1.params do
begin
ParamValues['v1']:=SG1.Cells[0, i];
ParamValues['v2']:=SG1.Cells[1, i];
ParamValues['v3'] := SG1.Cells[0, i + 1];
ParamValues['v4'] := SG1.Cells[1, i + 1];
ParamValues['v5'] := SG1.Cells[0, i + 2];
ParamValues['v6'] := SG1.Cells[1, i + 2];
ParamValues['v7'] := SG1.Cells[0, i + 3];
ParamValues['v8'] := SG1.Cells[1, i + 3];
ParamValues['v9'] := SG1.Cells[0, i + 4];
ParamValues['v10']:= SG1.Cells[1, i + 4];
end; // with
ZQuery1.ExecSQL;
i := i+5;
end; // i
Screen.Cursor := crDefault;
stopzeit := now;
Panel1.Caption :='SuchZeit : '+ FormatDateTime('nn:ss:zzz', StopZeit - StartZeit) ;
end;
Das Problem dabei: Wo vorher keine Fehlermeldung war, erscheint jetzt
Code:
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt Project2.exe ist eine
Exception der Klasse EZSQLException aufgetreten. Meldung: '
SQL Error: Dynamic
SQL Error
SQL error code = -104 Token unknown - line 1, column 51 ,. Error Code: -104. Invalid token The
SQL: INSERT INTO Testtabelle (Wert1, Wert2) VALUES(?, ?), (?, ?), (?, ?), (?, ?), (?, ?); '. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Spalte 51?? Es gibt nur 2 Spalten.
Bitte um Übersetzung dieser Fehlermeldung.
@ Furtbichler @ Himitsu
bulk insert Erkläre mir einer diesen Begriff. Ich meine gelesen zu haben, daß bulk insert bei Firebird nicht möglich ist.
Der Link von Furtbichler verweist auf externalTables. Um dies nutzen zu können, muß ich doch mir unbekannte Veränderungen an der firebird.conf Datei vornehmen!??
Beim Bulk-Insert mußt du aber aufpassen.
Klient und Datenbankserver müssen auf die selben Speicherplätze zugreifen und sollten womöglich auch noch über die selben Netzwerkadressen verfügen (abgesehn man nutzt im Klient einen Dateipfad, und gibt dann dem Server einen anderen Pfad mit, unter welchem er die Datei findet)
Klient und Server sind auf ein und demselben Rechner. Reicht das?