tox-master Geschrieben 20. April 2005 Geschrieben 20. April 2005 Hi zusammen, ich habe mir ein Programm geschrieben, mit dem ich SQL-Befehle, die ich in einer Datenbank hinterlegt habe auslesen und ausführen kann. Nun hab ich aber das Problem, dass ich nicht weiß wie ich das anstellen soll, wenn ich die SQL-Anweisung während der Laufzeit meines C++ Programmes noch ändern will. Z.B hab ich in der datenbank stehen: select kundennr from kunde where Kundenort = ??? Wie kann ich dann zur Laufzeit diesen Platzhalter (???) tauschen??? danke Zitieren
Maulwurf_der_Schlaue Geschrieben 20. April 2005 Geschrieben 20. April 2005 du liest den befehl aus der db aus und hängst per funktion den laufzeitgenerierten teil dran und führst ihn dann aus. rein logisch würd ich das so lösen - programmtechnisch weiß ich nicht ob das so einfach geht wenn du die idee auch schon hattest, diese aber nicht umsetzbar war, dann ignorier mein post Zitieren
tox-master Geschrieben 20. April 2005 Autor Geschrieben 20. April 2005 Kannst du mir da ein beispiel Code liefern???? Zitieren
Maulwurf_der_Schlaue Geschrieben 20. April 2005 Geschrieben 20. April 2005 welchen teil meinst du?? sql-befehl aus datenbank raus sql-befehl manipulieren sql-befehl ausführen vom user daten empfangen Zitieren
tox-master Geschrieben 20. April 2005 Autor Geschrieben 20. April 2005 sql-befehl manipulieren!! danke der Rest funktioniert schon wunderbar!! Zitieren
Maulwurf_der_Schlaue Geschrieben 20. April 2005 Geschrieben 20. April 2005 ich muss zugeben ich hab noch nicht so viel in c gemacht, mein vorschlag war ja auch mehr rein techisch als programmiererisch :cool: aber wenn dein sql-befehl als string hast sollte es mit der funktion >> strcat << eigentlich leicht gehen. Zitieren
bigpoint Geschrieben 20. April 2005 Geschrieben 20. April 2005 du liest den befehl aus der db aus he... erstmal bitteschön wie und wo zu ???? @tox-master woher kriegst du die info von Kundenort ?? Zitieren
Maulwurf_der_Schlaue Geschrieben 20. April 2005 Geschrieben 20. April 2005 he... erstmal bitteschön wie und wo zu ???? ?? wo hat den tox-master die befehle hinterlegt, hmm ?? Zitieren
tox-master Geschrieben 20. April 2005 Autor Geschrieben 20. April 2005 @maulwurf schonmal danke @bigpoint Ich bekomme diese Daten aus meiner Datenbank. Ich habe z.B in meiner Datenbank eine SQL-Anweisung die lautet: SELECT COUNT(*) FROM VGE; Diese ganze 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>> festgehlaten werden. Wie jedoch kann ich dann mit meinem Programm mittels Dialog oder MessageBox den Platzhalter mit beispielsweise München ersetzten??? danke Zitieren
bigpoint Geschrieben 20. April 2005 Geschrieben 20. April 2005 @bigpoint Ich bekomme diese Daten aus meiner Datenbank. Ich habe z.B in meiner Datenbank eine SQL-Anweisung die lautet: SELECT COUNT(*) FROM VGE; Diese ganze SQL-Anweisungen sind in der Datenbank anhand einer fortlaufenden Nummer gekennzeichnet. Ach so. Als erstens SQL Anweisungen die in DB (Tabellen) gespeichert sind finde ich nicht als besonders gute Idee (dafür gibt es Funktionen oder Prozeduren) Wie jedoch kann ich dann mit meinem Programm mittels Dialog oder MessageBox den Platzhalter mit beispielsweise München ersetzten??? danke Ganz normal du liest es von Dialog aus und ersetzt den „platzhalter“ in deinem SQL Befehle (string) Zitieren
tox-master Geschrieben 20. April 2005 Autor Geschrieben 20. April 2005 Kannst du mir einen Beispielcode dafür geben?? Bin bisher noch nicht drauf gekommen, wie ich das anstellen kann. danke Zitieren
bigpoint Geschrieben 20. April 2005 Geschrieben 20. April 2005 und wie liest Du den SQL aus DB aus. Zitieren
tox-master Geschrieben 20. April 2005 Autor Geschrieben 20. April 2005 GetDlgItemText( IDC_BEFEHL, strKey ); x_strSQL.Format("SELECT SQSTEXT FROM SQS WHERE SQSNR = %s", strKey ); cursor = m_pDatabase->OpenCursor(); m_pDatabase->PrepareAndExecute(cursor, x_strSQL, 0); while (m_pDatabase->FetchNext(cursor)) m_pDatabase->GetFieldValue(cursor, 1, x_strValue); Zitieren
bigpoint Geschrieben 20. April 2005 Geschrieben 20. April 2005 Und was funkt hier nicht ? Ach so übrigens, Du bisst im falschem Forum (eins höher) !? Zitieren
tox-master Geschrieben 20. April 2005 Autor Geschrieben 20. April 2005 Das funktioniert ja! Aber mit dieser Funktion lese ich nur die SQL-Anweisung aus meiner Datenbank aus. Wie kann ich die ausgelesene SQL-Anweisung danach bearbeiten??? Sprich wie kann ich dann einen Platzhalter durch andere Daten ersetzen?? danke Zitieren
Maulwurf_der_Schlaue Geschrieben 20. April 2005 Geschrieben 20. April 2005 hi, wenn du den befehl strcat verwenden willst dann ist hier ne kleine (englische) instruktion Zitieren
bigpoint Geschrieben 20. April 2005 Geschrieben 20. April 2005 Ich denke das du CString benutzt wenn ja dann mit Replace Zitieren
Johannes Buchner Geschrieben 20. April 2005 Geschrieben 20. April 2005 Das mit der Datenbank hat wohl einige verwirrt Du willst Sachen in einem Text ersetzen, in c. schau mal auf http://anaturb.net/C/string_exapm.htm, wenn du C++ verwendest und string verwenden kannst... str.replace(4, // start position in str 2, // how many characters s1); // source for replasment strcat hängt nur text hinten an ein char* an. Ist dein dynamisches Zeug immer am ende? dann könntest du in etwa sowas machen: if(str[strlen(str)-1]=='?'){ str[strlen(str)-1]=0; strcat(str, "eigentlich wäre PHP dafür angenehmer, weil du da strtr verwenden kannst."); } Deine Frage hat eigentlich nichts mit Datenbanken oder Oracle zu tun ..., oder? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.