Autor Beitrag
avenger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Di 05.01.10 15:28 
Hallo,

Ich moechte gerne eine Zeile Strings in eine Access Datenbank mit den ADO komponenten einfuegen.
Den String setze ich mir Hilfe einer Stringliste zusammen. Wenn die Stringliste nun eine gewisse laenge bekommt (Ich glaube es koennen max 255 Zeichen eingefuegt werden). Funktioniert der INSERT nicht mehr.

Daraufhin hab ich versucht mir einen SQL Update Befehl zusammenzusetzen was auch funktioniert. Das Problem ist jedoch das es fast 8 Sekunden dauert bis die For Schleife komplett durchschlaufen ist. Welche moeglcihkeiten hab ich dies wesentlich schneller zu machen ? Wie lang darf der String in SQLS maximal sein ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
    for i := 0 to liste.Count-1 do
    begin

    SQLS := 'UPDATE Daten SET '+wert+'="'+liste.ValueFromIndex[i]+'" WHERE Date_And_Time="'+time+'"';
    
    SQL.Clear;
    SQL.Add(SQLS);
    ExecSQL;
    
    end;
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Di 05.01.10 17:03 
Verwende prepared Statements. Deine einfach Art des Zusammenbastelns des Strings führt dazu das jeder Hobby-Cracker deine Datenbank mit 2 Minuten Versuchen zerschießt (SQL Injection lässt grüßen).

Mit prepared Statement steigt auch die Performance. Ebenfalls solltest du bei Access die Curserlocation clUseServer verwenden.