Entwickler-Ecke

Datenbanken - Stringlaenge SQL Befehle via ADO


avenger - Di 05.01.10 15:28
Titel: Stringlaenge SQL Befehle via ADO
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 ?


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 - 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.