MySql --> mit c++ daraus lesen geht, aber wie schreib ich was in die Datenbank



  • Danke II, aber irgendwie sieht das nicht nach dem aus, was ich da vermutet hätte. Naja muss ich eh nochmal fragen.

    Aber: Ich habe mein MySQL schon über ODBC angebunden. Mein Problem ist blos die originale Handhabung der Klasse CRecordset.

    Die Lösung von Unix-Tom ist klasse, aber ich glaube, sie ist nicht DBMS unabhängig...

    😞



  • Sie ist zwar nicht Unabhängig aber ich bin dabei eine ODBC-Wrapper zu machen welche die gleichen Methoden exportiert. Man braucht nur die DLL austauschen und der Connect ist anders. Dem Connect bei ODBC übergibt man nur die Datenquelle.
    Ist aber noch Beta.

    Kommt übrigens alles in mein Buch rein.



  • Tja Unix-Tom. Wenn ich aber warte, bis du fertig bist, hat mich mein Chef erschlagen. 😞

    Ausserdem muss es doch irgendwo eine Anleitung für die normalen Datenbankzugriffsklassen der MFC und ihre Handhabung geben, oder?



  • In der MSDN



  • [ironie]Danke[/ironie], die Beschreibungen habe ich schon vor Monaten gelesen.

    Wenn ich die verstanden hätte bzw. überhaupt was an Beispielen gefunden hätte, dann würde ich hier nicht so nerven.

    Mir würde ja schon so ein doofes kleines Progrämmchen weiterhelfen, das mehr macht als nur ein Select.

    Wenn man doch blos nicht immer den Quellcode und die Bücher zurücklassen müsste, wenn man die Firma wechselt. Dann könnte ich zum Regal gehen und in ein Buch gucken und da steht das drin. Ich weiß aber weder Titel noch Verlag, sonst hätte ich es mir gekauft.

    Also: Ich habe hier die MSDN 10/2000, die ist zwar total kaputt (Verlinkung klappt nicht mehr) aber da drin hab ich auch mit der Suchfunktion nix gefunden. Die MSDN 04/2003 sieht genauso aus.

    Hast du mal einen Link zu der Online MSDN, wo Beispiele sind? Oder Suchbegriffe mit denen ich ganz bestimmt was finde? Es kommt mir wirklich ganz besonders auf die Beispiele an.

    🙂



  • im nachhinein denke ich, du meintest nur 'persistent'
    passt besser.. zu datenbanken.

    eine persistente verbindung...



  • @II: Ich frag nochmal nach, kann ja den richtigen Namen posten, wenn ich ihn weiss.

    🙂



  • SChau mal in die FAQ. Dort hab ich eine Source gepostet wie man ODBC anbindet und die Datenbank direkt per SQL anspricht



  • Ach Unix-Tom, ich geb es auf. 😞

    Das, was du gepostet hast funktioniert wunderbar. Ich kann es auch nutzen, hatte ich bisher ja auch. Das ist ja auch das, was ich heinz1 beigebogen habe.

    Ich möchte den "Microsoft Weg" mal machen.



  • Wie war eigentlich die Frage nochmal?
    Du wolltest per ODBC auf Datenbanken zugreifen oder ?



  • 🙂

    Ich möchte per ODBC von VC++6 auf meine Datenbank zugreifen. Welches Datenbanksystem ich verwende soll egal sein (damit ich nicht wieder von vorne anfange, wenn sich etwas ändert). Daher möchte ich, weil ich glaube, dass es dort am besten "verallgemeinert" ist, die MFC Klasse CRecordset verwenden.

    Und diese möchte ich so verwenden, wie das von Microsoft gedacht ist. (Also hast du im Prinzip recht, wenn du mich zum Beispiel suchen auf die MSDN verweist - blos ich hab nix gefunden.)

    Unter http://www.henkessoft.de/mfc_einsteigerbuch_kapitel12.htm findet man leider nur, wie eine Abfrage (Select) gemacht wird. Aber in dem Erklärungsstil suche ich halt noch, wie man die Daten verändert. Die tieferen Zusammenhäng wären auch interessant, damit ich mich nicht auf diese schrecklichen Assistenten verlassen muss.

    Das kann auch gerne auf Englisch sein, das stört mich nicht - Deutsch kommt nur der Faulheit entgegen 😉 .
    Solltest du einen Buchtipp haben, immer her damit. Geld spielt im Moment ein untergeordnete Rolle (war ja gerade Weihnachten).

    Habe ich jetzt meine Frage ausreichend klar formuliert? Ich knobel schon so lange mit dem Problem, dass ich manche Details schon als selbstverständlich betrachte.

    Danke 🙂



  • meinst du etwa addnew() ?

    BOOL CDbView::OnMove(UINT nIDMoveCommand) 
    {
    	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
    
    	if (m_AddMode){
    
    	if (!UpdateData())
    		return false;
    	m_pSet->Update();		
    	m_pSet->Requery();		//Datenbank wegen veränderung neu lesen
    	UpdateData(false);		
    	m_AddMode=false;		//Add ausschalten
    	return true;
    }
    	else	//kein Add
    
    	return CRecordView::OnMove(nIDMoveCommand);
    }
    
    void CDbView::OnRecordAdd() 
    {
    	// TODO: Code für Befehlsbehandlungsroutine hier einfügen
    
    	if (m_AddMode)
    		OnMove (ID_RECORD_FIRST);
    	OnGetRecordset()->AddNew();
    	m_AddMode=true;
    	UpdateData(false);	//Laden der aktuellen daten aus der Recordsetclasse
    						// in das view Fenster
    
    }
    
    void CDbView::OnRecordDelete() 
    {
    	// TODO: Code für Befehlsbehandlungsroutine hier einfügen
    
    	m_pSet->Delete();				//aktueller Datensatz geloescht
    	m_pSet->MoveNext();				//naechster wird verschoben
    	if (m_pSet->IsEOF() )			//ende durchs verschieben erreicht?? 
    		m_pSet->MoveLast();			//dann der letzte aktuell
    	if (m_pSet->IsBOF() )			//Ist die tabelle leer??
    		m_pSet->SetFieldNull(NULL);
    	UpdateData(false);
    
    }
    

    uraltcode aus uraltprojekt ohne anspruch auf richtigkeit



  • ps: das geht natürlich mit mysql genauso wie mit odbc ... etc...

    über den odbc treiber (kann man ja mysql genauso anbinden).
    ist aber irgendwie nicht schön.. mfc halt.



  • Jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! *hüpfdurchsbüro*

    Oh, das ist es! Danke! Danke! Danke! Danke! Danke! Danke! Danke! Danke! Danke! Danke!

    Das ist so ein gesuchtes Beispiel. Ich hoffe auch mal, dass keine bösen Fehler drinstecken, aber ein Ansatz zum Ausbauen ist es auf jeden Fall.

    Du kommst einen rauf. 🙂

    Ja, genau das war gesucht. So dumm es scheint, aber ich hab es nicht finden können. Ich brauchte wirklich nur: "Welche Befehle kombiniere ich mit welchen anderen am besten?" Und das hab ich jetzt. *freu*

    Vielen lieben Dank nochmal!
    🙂

    PS: Ich weiss dass es nicht schön ist. Direktes SQL finde ich "einfacher" und deutlich durchschaubarer, aber nach dem unerwarteten Wechsel des DBMS habe ich mir überlegt, dass es das beste ist, unabhängig vom Unterbau zu sein.



  • ehrlich gesagt hat bestimmt niemand gedacht, daß du DAS meinst...

    kauf dir jetzt dringend einmal ein buch, mfc grundlagen.. egal welches, hauptsache, datenbankanbindung ist mit drin..
    sonst kommst du nicht weiter, wenn du damit arbeiten musst.

    (gibts auch in fast allen bibliotheken, oder gebraucht bei amazon)



  • Hast du eine Empfehlung?

    Ich habe hier mindestens 5 Bücher und in KEINEM ist es beschrieben.



  • wie wärs einfach mit einem elektronischen anfängerbuch
    http://www.se.fh-heilbronn.de/usefulstuff/VCPLUS6/kap14.htm

    das steht eigentlich alles drin.

    Funktion
    Beschreibung

    AddNew
    Fügt einen neuen Datensatz in den Recordset ein.

    Delete
    Löscht den aktuellen Datensatz aus dem Recordset.

    Edit
    Erlaubt die Bearbeitung des aktuellen Datensatzes.

    Update
    Speichert die aktuellen Änderungen in der Datenbank.

    Requery
    Führt die aktuelle SQL-Abfrage erneut aus, um den Recordset zu aktualisieren.



  • Danke! 🙂

    Das erste positive an einem "in 21 Tagen" Buch.

    Ich gebe zu, dieses Buch habe ich im Laden mal angelesen und auch online schon ab und zu, aber ich fand es immer so "anfängermäßig", dass es sofort wieder im Regal landete.

    Okay, jetzt bin ich erstmal beschäftigt. 🙂



  • So, für alle eventuell neugierigen:

    Das DBMS heisst Pervasive.
    (http://www.pervasive.com)


Anmelden zum Antworten