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



  • @Unix-Tom: Nein, nicht MySQL hat sich geändert. Ich muss ein anderes System verwenden. Perversif oder so, ich hab den Namen nicht richtig verstanden und hatte noch nicht die Möglichkeit genauer nachzufragen.

    Ich muss jetzt halt ODBC allein verwenden. Nicht dass ich nochmal umsonst entwickle.



  • @heinz1:

    Kannst Du bitte den TOFU mal unterlassen... erleichtert das Lesen Deiner Beiträge ungemein. Danke!



  • Hallo zusammen !!!

    Mein besonderer Dank gilt estartu_de, ohne deren Hilfe wäre ich noch lange nicht fertig.

    Heinz

    estartu_de schrieb:

    Jetzt muss ich heinz1 aber mal unterstützen! 😡

    Ich lese seit Monaten mit, in der Hoffnung, dass genau dieses Thema endlich mal beantwortet wird. Ich suche nämlich auch nach Antworten auf exakt diese Fragen.

    Ich hatte sie auch schon mal bekommen, MySQL spezifisch. Aber leider hat sich das DBMS geändert und könnte sich nochmal ändern. Also möchte ich dass jetzt wirklich gerne mit den Klassen der MFC erschlagen.

    @alex-t: Wenn es schon so oft im Forum stand, warum zum Henker (*explodier*) finde ich es nicht? Mit welchen Suchbegiffen findet man die Beträge?
    Achja, ich vergaß: Die Suche ist ja immernoch kaputt. Man findet also hier im Forum nix.
    Wenn du dich noch dran errinnerst, poste doch mal die Links oder hast du vielleicht ein Beispielprojekt?

    Warum könnt ihr immer nur auf die FAQ verweisen? Klar will man nicht alles immer und immer wieder schreiben - verstehe ich. Aber: Solange die Suche hier nicht geht ist genau der Verweis auf die Suche sehr unfair. Denn die Anleitung steht nicht in der FAQ, sondern wenn überhaupt irgendwo im Forum an sich. Un das durchzusuchen (von Hand) ist unzumutbar.

    Also: Bitte, ich möchte es auch wissen!
    Wie macht man ein Insert oder Update oder Delete mit der Klasse CRecordset?

    @heinz1: Wenn du auch eine auf MySQL spezialisierte Variante gebrauchen kannst, kann ich dir ein Beispielprojekt schicken. Ansonsten kannst du dir ja die Klassen und Anleitungen von Unix-Tom anschauen, genau das nutze ich nämlich.



  • Tja, nur auf meine Fragen hat sich noch keine Antwort gefunden. 😞

    Die Lösung mit der direkten Übergabe von SQL-Kommandos ist ja angenehm, aber wohl nicht DBMS unabhängig. Dass muss ich aber sein.



  • meinst du persavive? sieht nach einem totschlagwort aus.
    http://www.heise.de/newsticker/data/jk-28.08.02-005/
    http://www.pervasive2004.org/cfp.php

    mit dem mysql/odbc driver kannst du mysql wie odbc anbinden und verwenden.
    vielleicht hilft das.

    so long



  • ps: aber im grunde brauchst du eine abstraktion der db, die daten anfordert in einem bestimmten format, und die jeweiligen öffnungsprozeduren müssen überschrieben werden mit der spezifikation der jeweilig von der speziellen db erforderten öffnungs- und leseprozedur (bzw. schreibprozedur).
    damit hälst du das ganze soweit offen, daß später neue dbs oder was sonst daten liefert angehängt werden können.



  • 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.


Anmelden zum Antworten