Entwickler-Ecke
Datenbanken - Query.ParamByName ersatz ?
inselberg - Mo 07.04.03 12:08
Titel: Query.ParamByName ersatz ?
hi,
ich suche eine möglichkeit sonderzeichen in ein textfeld zuschreiben. gibt es einen andern weg als über ParamByName, da ich zum einfügen der datensätze eine batchkomponente benutze, die um einvielfaches schneller ist.
(mit ParamByName müsste ich daten -> query -> string -> batchkomponente)
Moderiert von
Tino: Absätze entfernt.
kiwicht - Mo 07.04.03 22:55
... bevor deine Frage ganz untergeht, werd ich ma versuchen dir zu helfen =)
Aalso:
Du brauchst eine Alternative zu ParamByName?
Ich hab das leider noch nie benutzt, bin mir also nicht so sicher, aber ich glaub damit übergibts du doch ganze einfach nur den SQL Text an die Query-Kompo, oder irr ich?
Wenn dem so ist, hast du dir schonmal
Quelltext
1:
| query.SQL.Text := (' .... '); |
oder
Quelltext
1:
| query.SQL.Add('... '); |
angeschaut?
hoffe das hilft etwas
mfg
Moderiert von
Tino: Code-Tags hinzugefügt.
inselberg - Di 08.04.03 02:03
der nachteil an der query komponente ist dass sie sql-befehl pro sql-befehl übergibt, was für meine anwendung viel zu langsam ist.
aus dem grund nutze ich ebenen eine batch komponente, die eine liste aus sql-befehlen auf einen "rutsch" überträgt.
nur müssen diese eben eine richtige schreibweise haben, also keine syntax fehler.
im mom. ersetze ich mittels replacestr alle " durch \" ... jedoch gibt es noch mehr zeichen die als steuerzeichen interpretiert werden, alles von "hand" zu ersetzen wäre zu zeitaufwendig.
also hilft mir dein posting nicht weiter ... trotzdem danke :)
hansa - Di 08.04.03 06:26
TDataSet reicht völlig und Du schleppst keinen unnötigen Ballast mit. :shock:
inselberg - Di 08.04.03 12:13
???
hansa - Di 08.04.03 13:04
Hi,
Quelltext
1: 2: 3: 4:
| ArtDataSet.close; ArtDataSet.SelectSQL.Text := 'SELECT NR, BEZ FROM ART WHERE BEZ = : Abfrage'; ArtDataSet.Params.ParamByName ('Abfrage').AsString := Edit1.Text; ArtDataSet.open; |
Hier soll ein Artikel über seinen Namen gesucht werden. Wobei als Parameter irgendein Text aus einer Editbox verwendet wird. Statt SelectSQL kann man natürlich auch InsertSQL usw. verwenden.
inselberg - Di 08.04.03 13:33
es geht ums einfügen von vielen daten, und da ist diese methode extrem uneffektiv.
hansa - Di 08.04.03 14:04
ineffektiv ? Kann schon sein, aber warum müssen es Parameter sein ? Du schreibst, es müssen sehr viele Daten "eingefügt" werden. Also per Programm ? Ja, dann mach das doch einfach mit FindField.
Quelltext
1:
| DataSet.FindField ('PREIS').AsFloat := .... |
Oder erklär mal, warum das ein Parameter sein muß.
inselberg - Di 08.04.03 14:23
ein einfaches beispiel
Quelltext
1: 2:
| txt := 'hallo "welt"'; sql := 'INSERT INTO table VALUES ("'+txt+'");' |
also
Quelltext
1:
| INSERT INTO table VALUES ("hallo "welt""); |
was natürlich falsch ist ..
mit ParamByName wäre 'hallo "welt"' richtig geparst worden (in 'hallo \"welt\"');
und warum benutzt du nun nicht ParamByName ?
*weil es eben nicht auf in der batchkomponente (zeos) nicht geht
und warum nicht manuell ersetzen?
* weil es halt nicht nur " zu ersetzen ist sondern auch ua % ... (und sicher welche die ich noch nicht mal kenne)
* durch mehrere ReplaceStr das programm viel langsamer wird
anmerkung: bei dem programm handelt es sich um einen newsreader (nntp) welcher die artikel mittels einer mysql datenbank verwaltet
Moderiert von
Tino: Code-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!