MFC und datenbank (MySQL)



  • Hallo,

    ich suche ein Einstieg in MFC und Datenbanken. Ich kenne die IDE noch nicht
    gut. gibt es da gute Tutorials oder bereits Beispiele (auch allg. zu MFC)?

    Gruss Stefan



  • Also, es wird sich bestimmt noch Unix-Tom melden, der hat eine eigene Klasse extra für MySQL geschrieben, schau mal in die FAQ.

    Wenn du über ODBC zugreifen willst, bietet sich das Buch "Visual C++ in 21 Tagen" als Einstieg an.
    Das Buch gibt es auch online, ich finde aber grade den Link nicht - vielleicht hat den weranders. 🙂
    Auf jeden Fall solltest du dir dafür die Klassen CDatabase und CRecordset angucken.



  • die Klasse von Unix Tom versteh ich nicht ganz, bzw kann ich ja auch gar nicht aber ich komm mit der Verwendung nicht so ganz klar 😞 😞 😞

    Aber ich hab dir schon mal ein wenig was zum dich darauf vorbereiten

    Einmal das hier http://www.willemer.de/informatik/db/index.htm
    und dann das von Estartu_de angesprochene Buch unter
    http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/start.htm





  • Diesen Beitrag hab ich schon gelesen, gibt es irgendwo eine Allgemeinere Anleitung? Ich hab kein Plan wie ich damit anfangen soll, wo ich das verwenden kann (nur in Recordviews?) und und und. Gibt es da nichts??



  • Die Anleitung von Unix-Tom kannst Du immer anwenden.



  • skorpions77 schrieb:

    Die Anleitung von Unix-Tom kannst Du immer anwenden.

    welche? meinst du dass ich die Klasse überall anwenden kann???
    Weil eine allgemeine Anleitung wie man die Klasse ordentlich verwendet hab ich noch niergendwo gefinden



  • Die gibt es auch nicht weil es noch nicht OS ist und ich gerade ein Buch dazu schreibe.
    Wenn man aber keine LIB einbinden kann sollte man sich nochmal mit Grundlagen beschäftigen.
    Du includest die headerdatei, erstellt ein instanz der klasse und der rest steht in der faq.
    wenn es linkerprobleme gibt dann musst du eben die lib und die header von mysql.de downloaden.



  • hey nicht gleich angreifend werden, hab die Klasse schon längst included! es gibt auch keine Linkerprobleme!
    Aber wenn cih mir die Funktionen aus der Header anschau, dann kann das Ding doch mehr wie in dem Link oben, oder?
    Darum ging es mir!



  • was soll es noch mehr können? Du kannst einiges zur Datenbank erfahren. Das musst du aber selbst rausfinden. Steht eigentlich auch auf meiner Webseite.



  • Also ich hab jetzt mal ohne viel nachzudenken einfach das aus obigem Link versucht, ich komm da aber auf keinen grünen Zweig!
    Ich kann nicht mal mehr debuggen, der springt mir immer in den Assemblercode auf irgendeinen User Breakpoint.
    Kannst du mir mal sagen wie man einfach nur connected?
    Bei mir hängt sich dann das ganze Programm auf, woran liegt das?
    Hier mal mein Source bei dem das komplette Programm sich aufhängt!

    if (m_databaseconnect.connected == false) 
        { 
            switch (m_databaseconnect.connect(m_dbhost,m_dbdatenbank,1433,m_dbuser,m_dbpassw))// <-- hier hatte ich "text" drin, statt den Variablen
            { 
                case DB_CONNECTION_BAD: 
                    MessageBox("Bad connection");
    				return false; 
                break; 
    
                case DB_CONNECTION_OK: 
    				MessageBox("connection IO");
                break; 
            } 
        }
    

    Er springt glaub ich schon in die if denn einmal bekam ich Bad connection aber seit dem hängt es sich jedes mal wieder auf!



  • ist eigentlich alles richtig
    welche VC-Version verwendest du?



  • VC6 hab jetzt noch ein wenig probiert und festgestellt, dass er nach ca 5 min dann doch ein Fenster bringt bad connection, das würde ja eigentlich darauf hin deuten, dass die Übergabe-Parameter vom connect falsch sind, oder?
    Kann ich schreiben

    m_databaseconnect.connect("meinHost","meineDB",1433,"anyusr","anyusr")//??
    

    sprich darf ich da einfach so nen String übergeben? eigentlich spricht doch da nichts dagegen, oder?? Aber selbst wenn die falsch sind dürfte er sich doch eigentlich nicht so aufhängen, oder? also ich habe sonst ganz normal über den Wizzard die DSN zu der DB ausgewählt und wenn ich da connected hab ging das razfaz



  • ja kann man



  • Ok ich hab jetzt jegliche möglichkeit versucht um irgendwie zu connecten, es scheiterte aber jedes mal!

    1. muss ich den Server mit \\ angeben?? \\RAEDV10 oder nur RAEDV10
    2. bei DatabaseName den Namen angeben, oder den Namen der DSN (wenn ich das richtig verstanden habe bräuchte ich gar keine)
    3. Ich hab den Port aus der DSN gelesen, mit der es geht, dann sollte der doch richtig sein, oder?
    4. muss ich noch irgendwas vor diesem Source machen?

    if (m_databaseconnect.connected == false) 
        { 
            switch (m_databaseconnect.connect("RAEDV10","4862TRW",1433,"anyusr","anyusr")) 
            { 
                case DB_CONNECTION_BAD: 
                    MessageBox("connection NIO");
    				return false; 
                break; 
    
                case DB_CONNECTION_OK: 
    				MessageBox("connection IO");
                break; 
            }
        }
    


  • 1. richtig nur den Namen vom dem Datenbankserver oder die IPAdresse angeben.
    2. Ja den Namen der Datenbank angeben.
    3. Das ist der Port für Microsoft SQL Server.
    4. nein das sollte so passen.

    Kann es vielleicht sein das Dein Datenbankserver eine Firewall benutzt?



  • Kann es sein das Du garnicht MySQL benutzt.
    5 Min für eine abgelehnte Verbindung ist etwas lange. Normalerweise dauert dies bei falschen eingaben Wenige Millisekunden.
    Und wie skorpions77 sagte: Dies ist nicht der Standardport von MySQL. MySQL hat 3306.



  • @scorions77 ICh glaube nicht dass der Server ne Firewall hat, da ich ja mit dem was der Wizard erstellt hat und über die ODBC schnittstelle ja auf die Daten komme!

    @Unix Tom Die lange Zeit könnte natürlich auch an der größe der DB liegen, allein in der Tabelle die ich benutze sind 152 Splaten und momentan knapp 6500 Datensätze. Aber so wie ich das auf deiner HP gelesen habe kann deine DLL das!

    Zu dem Thema mySQL, ich dachte bis vor 10 Sekunden noch dass auf dem Server MySQL läuft, hab aber soeben nach 10 verschiedenen Antworten endlich herausgefunden, dass es MS-SQL ist! 🙄 Tut mir leid, dass ich euch damit belästigt hab, war nicht meine Absicht. Danke dennoch für eure Hilfe



  • Es gibt auch eine ODBC-Wrapper

    www.sensorme.de/dateien/odbc.zip

    Unterscheidet sich lediglich in der Connectfunktion und ist pro Feld auf 255 Zeichen begrenzt.

    Bei einem Connect ist es egal wie groß die DB ist.
    Hier wird lediglich die User-Tabelle abgefragt die eigentlich bei 100000 Einträge sicher nicht länger als wenige s brauchen darf.



  • cool werde ich gleich mal probieren, gibt es aber eine Möglichkeit die Feldgröße zu ändern? also bisher hab ich mir halt einfach meinen Stringauf String(2000) gemacht. denn ich muss in einem Feld EEPROM-Daten auslesen.Und die sind gern mal knapp2000 Zeichen lang 😮


Anmelden zum Antworten