bel SQL-Befehle an DB (ODBC) senden
-
Hallo zusammen,
ich muss meine Datenbank aktualisieren, genauer gesagt ich muss in einigen Tabellen noch Spalten einfügen. Die SQL-Befehle dafür sind mir bekannt.
Meine Frage: Welchen c++ code benötige ich dafür?
Um mit den Daten zu arbeiten, verwende ich Recordsets.Gruß frankonline
-
Ich nehme an Du arbeitest mit der MFC-Klasse CRecordset.
Diese Klasse besitzt einige Membervariablen wie z.B. m_strFilter oder auch m_strSort. Wenn man vor dem öffnen der DB in m_strFilter einen SQL-Befehl ablegt wird dieser über ODBC als SQL-Statement an die DB übertragen. Leider funktioniert hier nicht jeder bel. SQL Befehl, sieh hierzu nochmal in die MSDN.
Im weiteren kann ein SQL-Befehl jeweils vor dem Aufruf von MoveFirst, ... , MoveLast abgesetzt werden. Dazu ist der Befehl immer in m_strFilter abzulegen.
In m_strSort kann eine "ORDER BY" Klausel abgelegt werden (wie gehabt mit DESC und ASC). Aber wie gesagt genaueres findest in der MSDN unter CRecordset.Bei einigen Klauseln ist es aber nicht erlaubt m_strFilter und m_strSort gleichzeitig zu verwenden! Einer der beiden sollte immer als Inhalt "" bekommen wenn der andere verwendet wird.
Mehr fällt mir im mom dazu nicht ein, hab die MSDN auch nicht hier.
Gruss
-
Das Auslesen der Datenbank mit der Klasse CRecordset ist nicht mein Problem, das klappt prima, aber ich muss nun SQL-Befehle wie "Create Table ..." usw auf der Datenbank ausführen.
Meine Frage war: Mit welchem c++ (MFC) - Code gelingt mir dies?Danke und Gruß
frankonline
-
So als kleiner Tip: ich würde Befehle wie Create Table oder Alter Table nicht von einem Programm, sondern einfach direkt auf der DB ausführen. Der Grund ist, dass es wohl den Aufwand nicht wert ist, dafür extra ein Proggi zu schreiben, da der Befehl ja wohl eh nur einmal ausgeführt wird.
-
Ja das ist schon richtig, aber ich habe auf dem PC keine Datenbankoberfläche (ACCESS) sondern eben nur den Treiber und mein Programm!
-
Ich hab da so meine Zweifel (möchte jetzt nicht unverschämt klingen!) ...
Ich hab doch bereits geschrieben, dass jeder SQL-Befehl den man an die DB senden möchte in die die Membervariable m_strFilter eintragen muss, was brauchst Du denn noch? Diese Variable ist vom Typ CString - Du schreibst deinen Befehl einfach als Text DORT hinein und sendest z.B. einen Open-Befehl an die DB. Den Rest macht die Klasse CRecordset. Wenn Dir das echt nicht hilft - wird Dir (glaube ich) kaum jemand helfen können ...
Natürlich gibt es auch noch Befehle wie SQLExecute, würde aber auch bedeuten dass man mal lesen muss... *gg*
Also, wenn Du hier angekommen bist - sei glücklich, denn Du kannst lesen! (hehe)
Nichts für ungut, ein nur ein kleiner Spaß!Gruss
-
Hi,
benutz doch bitte das nächste mal die Suchfunktion !!
[url]
http://www.c-plusplus.net/forum/viewtopic.php?t=51807&highlight=
[/url]