Autor Beitrag
Mikro79
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 17.06.11 14:38 
Hi,

ich habe folgendes Problem:

Ich möchte in einer VCL-Applikation einen Benutzer ein SQL-Statement eingeben lassen, welches dann später mal per ADO-Query ausgeführt werden soll.
Nun möchte ich nach der Eingabe des Statement gerne die Syntax prüfen.
Wenn es nur ein SELECTist, kein Problem, dann führ ich es halt aus un check soi, ob's in Ordnung ist.
Anders ist es ja bei UPDATE, DELETE usw. Gibt es hier eine Möglichkeit von Delphi aus das Statement zu prüfen (Syntax) ohne es auszuführen?
Ich verwende den MS-SQL-Server. Direkt im Management Studio kann ich ja schon ein Statement prüfen ohne, dass es direkt ausgeführt wird (Parse oder Debug).

Vielleicht weiss ja jemand Rat. Ich habe leider nichts dazu gefunden.

Danke schonmal für eure Mühe.

Gruß, Mirko
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 17.06.11 14:58 
Pack die Ausführung des Statments in eine Transaktion. Dann kannst Du sie ausführen und direkt danach ein Rollback machen

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 17.06.11 16:41 
Ist zwar nicht direkt auf SQL bezogen und auch nicht in Delphi, sondern PHP geschrieben, aber den Einstieg findest Du bei mir im Blog erklärt.

Die Variante mit den Transaktionen ist zwar an sich interessant, da es aber einige Statements gibt, die nicht in einer Transaktion zurückgerollt werden können, solltest Du hier vorsichtig sein.

IIRC erlauben es viele DBMS aber ein Prepare auf ein Statement auszuführen, was das Statement zwar compiliert, aber noch nicht ausführt. Wie das konkret bei den diversen Datenbank-Layern jeweils angesprochen wird, müsstest Du aber schauen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Mikro79 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 21.06.11 16:41 
Moin,

vielen Dank für eure Antworten.
Hab das jetzt in einen "Begin Transaction...Rollback"- Block gepackt.
Ich denke mal, mit den hier vorkommenden Statements wird das funktionieren.

Gruß, Mirko