C++ SQL Insert, Update, Delete ??
-
Der Austausch passiert mit Hilfe von DoFieldExchange. Diese Funktion hat dein Recordset, wenn es mit dem Assistenten erstellt wurde.
Wie das genau funktioniert habe ich mir mal in der MSDN angeschaut aber nicht so gut verstanden, dass ich es dir erklären könnte.Du müßtest in dem Recordset Membervariablen haben, die so ähnlich heißen wie die Spalten in der Datenbank. Und in diese Variablen schreibst du die Werte, die dann in die Datenbank sollen.
Beispiel:
barcode heißt die Spalte in der Tabelle
m_barcode heißt die Variable im RecordsetOkay?
-
so ungefähr.. gibts kein beispiel.. ausserdem nutze Visual Studio NET
-
Das Thema Datenbanken per ODBC wird generell sehr stiefmütterlich behandelt. Das heißt:
Entweder suchst du dir im Internet den Wolf, oder du rennst entäuscht alle Buchläden und Bibliotheken ab, oder du liest MSDN bis zur Vergasung - oder du mischt alles und fragst auch hier.Solltest du allerdings eine ergiebige Infoquelle finden, dann poste sie bitte hier, denn es gibt noch mehr Leute die sowas suchen.
Ich nutze noch VC6 aber so groß sollte der Unterschied doch nicht sein...

-
verdammt,
ich hab zwar 3 bücher aber nichts erkärt wie und wo ich die membervariablen intialisiere und eine verbindung zur datenbank herstelle.
-
Du könntest dir auch meine Klasse runterladen und die verwenden.
http://www.sensorme.de/dateien/odbc.zip
Hier setzt man nur SQL-Querys ab wie es der Standard hergibt.
-
gibts eine Readme dazu.. wie deine Klasse funktioniert ?
evtl ein Beispiel ?
-
also ich hab das hier gefunden wie man CRecordset nachträglich einfügt. Funktioniert bei Visual Studio NET eigentlich genauso.
http://www.mindcracker.com/mindcracker/c_cafe/odbc/add_odbc_support.asp
Mal sehen ob ich das ganze zum laufen bekomme
-
habs hinbekommen.
Falls irgendjemand noch wissen will wie das funktioniert.
Helfe gerne. Thx an alle die geholfen haben

-
Hallo Indian,
ja, ich wüßte gerne wie Du das Problem gelöst hast, ich bastel nämlich auch schon seit Ewigkeiten daran herum.
Viele Grüße,
Arwen
-
was ist denn dein problem ?
-
Ich möchte gerne mit Hilfe von Recordset ein Insert in eine MySQL-Datenbank machen. AddNew kann ich nicht verwenden, weil ich eine ID in meiner Datenbank habe, die automatisch hinzugefügt werden soll. Ich möchte die Werte aus den Feldern mit insert in die Datenbank einfügen, mehr möchte ich gar nicht, aber das scheint komplizierter zu sein, als ich dachte.
-
Und warum dann ODBC? Ist doch um längen langsamer.
Etwas einfügen geht mit
INSERT INTO 'tabelle' SET 'feld' = 'blabla'
-
Wie man einen normalen Insert Befehl absetzte weiß ich, aber das möchte ich ja nicht jedes Mal über die MySQL Konsole machen, sondern das Formular in Visual C++ ausfüllen, und dann abschicken. Und das bekomme ich leider nicht auf die Reihe.
-
@Arwen: Kannst du nicht sowas wie einen Autowert verwenden?
Bei Access und Pervasive geht das so: Man setzt das ID-Feld NULL und macht dann das Insert. Das DBMS erkennt, dass eine ID vergeben werden muss und macht das.
Gehen bei MySQL vielleicht mittlerweile die Trigger? Dann kannst du das damit lösen.
-
Du musst es ja nicht über die Konsole machen. Auch bei ODBC kann man eine INSERT absetzen.
Aber abgesehen davon frage ich mich warum ODBC. Nimm die MySQL-API.
-
Stinknormale SQL über OBDC mit Fehlerüberprüfung kannste folgendermaßen ganz einfach absetzen:
CDatabase db; // db.openex etc.pp. CString strCmd = "INSERT INTO tabelle(feld1, feld2) VALUES ("+wert1+","+wert2+")"; TRY { db.ExecuteSQL( strCmd ); } CATCH(CDBException, e) { // The error code is in e->m_nRetCode } END_CATCHmfg
tobi