![]() |
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Zitat:
|
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Ja, aber könnte es dann nicht so sein, dass sowohl die DLL, als auch die DataSet-Komponente die gesamten Daten separat im Speicher vorhalten?
Damit hätte doch dann die Anwendung die Daten zweimal im Speicher? Oder ein anderer Ansatz: Statt mit 'nem DataSet und Append, 'ne Query nehmen. Das könnte dann sinngemäß ungefähr (ungetestet) so aussehen:
Delphi-Quellcode:
AssignFile(F, 'C:\daten.txt');
reset(F); form1.Query1.SQL.Clear; form1.Query1.SQL.Add('EXECUTE BLOCK BEGIN'); repeat begin readln(F, temp); x := x + 1; form1.Query1.SQL.Add(Format('insert into tabellenname (Name) Values (%s);',[QuotedStr(temp)])); // Jeweils 1000 Namen "am Stück" in die Tabelle einfügen. // Statt 1000 ggfls. einen angepassten größeren oder kleineren Wert nehmen. if x Mod 1000 do begin form1.Query1.SQL.Add('END'); form1.Query1.ExecSQL; form1.Query1.SQL.Clear; form1.Query1.SQL.Add('EXECUTE BLOCK BEGIN'); end; end until eof(F); if form1.Query1.SQL.Count > 1 then begin form1.Query1.SQL.Add('END'); form1.Query1.ExecSQL; form1.Query1.SQL.Clear; end; CloseFile(f); showmessage('...fertig. ' + inttostr(x) + ' Datensätze'); |
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Schönes Beispiel, aber ein Fehler ist da drinnen:
Delphi-Quellcode:
Da kann mit einem falschen String in der Textdatei Blödsinn passieren.
form1.Query1.SQL.Add(Format('insert into tabellenname (Name) Values (%s);',[QuotedStr(temp)]));
Besser mit Parametern arbeiten:
Delphi-Quellcode:
x musst Du halt als Zahl hochzählen.
form1.Query1.SQL.Add('insert into tabellenname (Name) Values (:ParamX);');
form1.Query1.Params[x]:=temp; (Auch ungetestet) |
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Zitat:
|
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Da ich bisher noch nicht so intensive Bekanntschaft mit embedded Servern hatte, ich meine mich zu erinnern, daß da lokal einige Services laufen, darum bin ich davon ausgegangen, das das Client-Programm zwar auf der selben Maschine aber ansonsten unabhängig von der DB läuft? (z.B. InterbaseServer)
Gruß K-H |
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Embedded bedeutet, dass die Client-Dll den Serverkern enthält. Keine externen Services usw.
|
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Ok, Danke!
Gruß K-H |
AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Wie ist den die Firebird Datenbank Konfiguriert
- Pagesize - Buffers DefaultDbCachePages - werden UDF verwendet - Forcedwrites - MaxUnflushedWrites wo liegt ggf da Temp Verzeichniss und wieviel Platz ist da frei Pagesize*Buffers ist die Anzahl Bytes die Firebird im Cache vorhält (bei embeded) Speicherverbrauch bei offenen Transactionen ![]() mfg Hannes |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 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 by Thomas Breitkreuz