Datenbank zugriffsproblem
-
Hallo zusammen,
ich habe ein Programm geschrieben, mit dem Ich SQL-Anweisungen,
die in der Datenbank gespeichert sind auslesen und ausführen kann.Ich habe z.B in meiner Datenbank eine SQL-Anweisung die lautet:
SELECT COUNT(*) FROM VGE;
Diese SQL-Anweisungen sind in der Datenbank anhand einer
fortlaufenden Nummer gekennzeichnet.Wenn ich nun aber so etwas habe will wie
select kundennr from kunde where Kundenort = ???Muss dass doch in der Datenbank wahrscheinlich so:
select kundennr from kunde where Kundenort = <<Platzhalter>>
hinterlegt werden.Wie jedoch kann ich dann mit meinem Programm mittels Dialog oder
MessageBox den Platzhalter mit beispielsweise München ersetzten???danke
-
Die meisten Datenbanken unterstützen von sich aus Platzhalter. Üblicherweise werden die durch ein Fragezeichen gekennzeichnet:
select * from whatever where x = ? and y = ?
Beim Ausführen musst du dann natürlich die Platzhalter mit Werten belegen. Da musst du mal in deine Doku schauen. Bei ODBC geht das z.B. per SQLBindParameter().
Eine andere Möglichkeit ist eine UDF zu schreiben. Der übergibst du einfach Statement-ID und Variablen und sie liefert dir das Statement mit den ersetzten Platzhaltern. Das ist so simpel, dass sollte mit einer UDF in Plain SQL problemlos möglich sein. Wenn deine DB keine überladenen UDFs erlaubt, musst du mehrere machen, je nachdem wieviele Variablen vorkommen (z.B. GetStatement1Var(), GetStatement2Vars() usw.).
Du kannst dir das komplette Statement dann einfach abholen, indem du die UDF aufrufst:
VALUES GetStatement(42, 'München')
Das VALUES ist bei deiner DB evtl. nicht nötig (siehe Doku deiner DB).
Du kannst es natürlich auch einfach mit den C++ Funktionen händisch machen (siehe std::string Doku).