Daten in Datenbank schreiben mit MFC
-
Hallo ,
Ich habe eine text datei und die nötige informationen in dieser text datei kann ich mit meiner selbst geschriebene funktionen lesen. Diese gelesene informationen will ich in eine Datenbank schreiben.
Da ich noch nie MFC und DB zusammen beutzt habe, habe ich grad schwierigkeiten.
Ich denke ich muss erst eine CDatabase und CRecordset klassen erstellen.und dann SQL code.Kann mir bitte jemand bisschen genauer (wenn es geht mit kleine beispiele) erklären wie ich dieses problem lösen kann.Danke im Voraus für die Unterstützung...
-
Ich empfinde die ATL OLE-DB Consumer Klassen einfacher zu verwenden.
http://support.microsoft.com/kb/198485Die Suhe nach ATL Consumer wird Dir weitere Links und Source Samples liefern.
-
Danke, aber ich würd gern das mit CRecrdset und CDAtabase machen, weil ich muss es so machen(das ist pflicht bei der Aufgabe)
Vielen dank
-
Steht alles hier:
http://msdn.microsoft.com/de-de/library/s9ds2ktb.aspxSiehe samples im Fuß dieses Links:
http://msdn.microsoft.com/en-us/library/2dhc1abk(VS.71).aspx
-
Ich habe jetzt ein Daten bank erstellt mit SQL code und ich habe jetzt ein Recordset Klasse. Muss ich jetzt meine Daten mit eine neue Klasse in Datenbank eintragen und dann um die daten von der Datenbank aufrufen zu können muss ich dann Recordset Klasse benutzen? HAbe ich das Richtig verstanden ?
-
P:C: ich sag mal so , ich habe eine text datei und die infos in datei kann ich auslesen. Ich will die infos die ich ausgelesen habe, in tabellen(in Datenbank) eintragen.Brauche ich jetzt eine spezielle Klasse , in dem ich die SQL befehle wie z.B INSERT benutzen kann oder wie soll das gehen. Ich habe wirklich keine Ahnung..!
-
noni schrieb:
Ich habe wirklich keine Ahnung..!
Jo! Ist keine Schande.
Dann schau Dir aber doch bitte die Samples an, die man Dir nennt!
-
Hab gegickt und bin soweit gekommen, deswegen hab ich nochmal geschrieben
-
Und in den Samples ist Dir Methodik der einfachen Memberfunktionen von CRecordSet nicht klar geworden?
Siehe CRecordSet Doku:
http://msdn.microsoft.com/en-us/library/fsyskdkf(VS.80).aspxAddNew
Prepares for adding a new record. Call Update to complete the addition.CancelUpdate
Cancels any pending updates due to an AddNew or Edit operation.Delete
Deletes the current record from the recordset. You must explicitly scroll to another record after the deletion.Edit
Prepares for changes to the current record. Call Update to complete the edit.Update
Completes an AddNew or Edit operation by saving the new or edited data on the data source.
-
Mein Problem ist ich habe ein Recordset Klasse angelegt aber beim Kompilieren bekomme ich solche Errors obwohl ich noch gar nix gemacht habe..
Woran kann dieses Problem liegen??//recorddd.cpp
c:\cvs\projekte\statistik\recorddd.h(14) : error C2504: 'CRecordset' : Basisklasse undefiniert
c:\cvs\projekte\statistik\recorddd.h(16) : error C2629: 'class recorddd (' unerwartet
c:\cvs\projekte\statistik\recorddd.h(16) : error C2238: Unerwartete(s) Token vor ';'
c:\cvs\projekte\statistik\recorddd.h(46) : error C2061: Syntaxfehler : Bezeichner 'CFieldExchange'
C:\CVS\Projekte\statistik\recorddd.cpp(17) : error C2653: 'CRecordset' : Keine Klasse oder Namespace
C:\CVS\Projekte\statistik\recorddd.cpp(17) : error C2065: 'classCRecordset' : nichtdeklarierter Bezeichner
C:\CVS\Projekte\statistik\recorddd.cpp(19) : error C2065: 'CDatabase' : nichtdeklarierter Bezeichner
C:\CVS\Projekte\statistik\recorddd.cpp(19) : error C2065: 'pdb' : nichtdeklarierter Bezeichner
C:\CVS\Projekte\statistik\recorddd.cpp(20) : error C2448: '<unbekannt>' : Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
C:\CVS\Projekte\statistik\recorddd.cpp(20) : error C2143: Syntaxfehler : Fehlendes ';' vor ':'
C:\CVS\Projekte\statistik\recorddd.cpp(21) : error C2448: '<unbekannt>' : Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
C:\CVS\Projekte\statistik\recorddd.cpp(50) : error C2065: 'CFieldExchange' : nichtdeklarierter Bezeichner
C:\CVS\Projekte\statistik\recorddd.cpp(50) : error C2065: 'pFX' : nichtdeklarierter Bezeichner
C:\CVS\Projekte\statistik\recorddd.cpp(51) : error C2448: '<unbekannt>' : Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
C:\CVS\Projekte\statistik\recorddd.cpp(79) : error C2653: 'CRecordset' : Keine Klasse oder Namespace
C:\CVS\Projekte\statistik\recorddd.cpp(84) : error C2653: 'CRecordset' : Keine Klasse oder Namespace
-
CRecordset ist unbekannt.
Du hast den Header afxdb.h nicht included.
Siehe Doku, CRecordset Klasse:
http://msdn.microsoft.com/en-us/library/92bcy0kw(VS.80).aspx
-
du bisch der beschte->(du bist der beste)
-
Hallo ich muss euch nochmal was fragen
try { RAdministA rsAdmin(GetDocument()->m_pDatabase); rsAdmin.Open(CRecordset::dynaset, NULL, CRecordset::none); rsAdmin.AddNew(); rsAdmin.m_UserName = data.m_sAnwendername; rsAdmin.m_Adminrechte = "r"; rsAdmin.Update(); rsAdmin.m_strFilter.Format("[UserName] = '%s'", data.m_sAnwendername); rsAdmin.Requery(); } catch (CDBException *e) { e->Delete(); }
ich fülle meine Tabelle wie Oben aus. Es gibt noch eine Spalte , die UserId heißt. Man sieht es nicht im Code, weil es wird in SQL befehle automatisch generiert. (1,2,3,4 ....). UserId ist mein PrimaryKey und ich werde es in eine andere Tabelle als Fremdschlüssel benutzen.
Wie kann ich es als fremdschlüssel in die andere Tabelle eintragen ? kann mir bitte jemand helfen.
LG
-
ODBC ist nicht mein Gebiet. Ich benutze nur OLE_DB.
Setze das Id-Feld mit in den Recordset. Aber bevor Du Update aufrufst Setze das Feld mit SetFieldDirty auf FALSE.
Danach mit MoveLast zurück und das müsste es gewesen sein.
-
rsAdmin.AddNew(); rsAdmin.m_UserId = data.m_iAnwenderid; rsAdmin.m_UserName = data.m_sAnwendername; rsAdmin.m_Adminrechte = "r"; rsAdmin.SetFieldDirty(&rsAdmin.m_UserId,FALSE); rsAdmin.Update();
tue ist das so auf False setzen..
Und wo und wie benutze ich MOveLast ?? in die andere Recordset(recordset für die andere TAbelle )?????LG
-
Ne! IMHO nach dem Update um die vergebene ID zu bekommen.
Dann kannst Du den anderen Recordset mit dem foreign key der vergeben wurde benutzen.
-
sorry was bedeutet IMHO ich habe wirklich nix kapiert ???
-
IMHO = In my humble opinion -> Googlen
Du sollst MoveLast nach dem Update ausführen, damit Du die geänderten Daten bekommst...
-
Du bisch wirklich der Beschte