mySQL



  • thx tom,
    hab die dateien runtergeladen, aber wie krieg ich denn nun ne datenbankabfrage hin, also sonderlich viel kann ich damit noch nicht anfangen...

    Hab mir mal die Beispiele im Beitrag "mySQL und MFC" angesehen, aber die gehen ja alle nicht. Hast du vielleicht mal ein Beispiel wo die includes und variablendeklarationen usw. schon drinnstehen. Also das ich das an ner laufenden Datei probieren kann???
    Wie gesagt, noch Anfänger...
    thx, mfg



  • du brauchst nur die Header einbinden. Zusätlich brauchst du die API von mysql.
    Dann die Bs. aus dem Beitrag. Das sollte gehen.



  • Kann mir vielleicht jemand erstmal so'ne generelle Info darüber geben, wie man über c++ auf mySQL zugreift???
    Also was ist besser, die API oder über ODBC.
    Kennt ihr vielleicht gute DEUTSCHE Tutorials? Oder habt ihr Beispiele, die man einfach nur noch compilieren muss (bzw. vorher die Verbindungsdaten ändern..) und dann laufen sie?
    Auf mySQL.com steht zwar jede Menge, aber wenn man sich zum ersten mal mit dem Thema beschäftigt macht Englsich das nicht gerade einfacher... Außerdem ist das fürchterlich viel und fürchterlich unübersichtlich find ich. Gibts nicht was "idiotensicheres"??? 😉

    thx, mfg



  • jetzt macht sich mysql die mühe, alles auf deutsch zu übersetzen

    http://www.mysql.de/documentation/index.html

    und keiner bemerkts 😉



  • thx, aber die hab ich mittlerweile auch schon gefunden.
    Hab mal angefangen das durchzulesen, ist ja nicht grad wenig... Trotzdem such ich noch nach Tutorials...!!!

    Hab als erstes die c++ api runtergeladen, aber da fehlte die mysql.h. also gingen die ganzen beispiele, die hier so rumschwirren nicht.

    Dann hab ich, wie in dem Beitrag C++ und mySQL in Rund um die Programmierung geschrieben wurde die c api ausprobiert, mit folgendem Beispiel:

    #include <stdio.h> 
    #include <windows.h> 
    #include "mysql.h" 
    
    int main ()  { 
        MYSQL_RES *mTabelle; 
        MYSQL_ROW mRecord; 
        MYSQL *mConnection, mDB; 
        int mError; 
        mysql_init(&mDB); 
    
         mConnection =mysql_real_connect(&mDB,"localhost","root","","test",0,0,0); 
        if (mConnection == NULL)  { 
            printf("Es konnte keine Verbindung zur Datenbank hergestellt werden"); 
            return 1; 
        } else { 
     printf("Es wurde erfolgreich eine Verbindung hergestellt!"); 
        } 
        mysql_close(mConnection); 
        return 0; 
    }
    

    Da bekomme ich dann folgende Fehlermeldungen:

    Linking...
    mysqltest.obj : error LNK2001: unresolved external symbol _mysql_close@4
    mysqltest.obj : error LNK2001: unresolved external symbol _mysql_real_connect@32
    mysqltest.obj : error LNK2001: unresolved external symbol _mysql_init@4
    Debug/mysqltest.exe : fatal error LNK1120: 3 unresolved externals
    Error executing link.exe.
    

    Was mache ich falsch? und irgendwas stand da noch von linken, aber wie geht das? benutze ms vs6.



  • Leider ist mein Buch zu diesem Thema noch nicht fertig sonst könntest du es kaufen.

    ODBC ist auch gut aber langsam. Lt. MySQL AB ist MyODBC aber noch nicht stable.

    Zum erstellen eine Projektes ist meine Warpper aber nicht wirklich schwierig.
    Einfacher geht es ja nicht mehr.



  • Unix-Tom schrieb:

    Leider ist mein Buch zu diesem Thema noch nicht fertig sonst könntest du es kaufen.

    Das ist natürlich echt schade, aber coole Idee, Marktlücke gefunden, wa!? 😉

    Hast du nicht vielleicht doch noch mal nen Beispiel für mich mit deiner Klasse??? Am besten einfach ne Verbindung, bloß noch kompilieren und dann gehts? Also irgendwas, wo man nichts falsch machen kann!

    Wie geht das denn eigentlich mit dem linken??? Also was macht man mit den lib-dateien???

    Doch, es geht noch leichter 😃
    Also hoffe ich mal 😞



  • du fragst, wie man linkt...

    das visual studio:

    projekt->einstellungen->reiter linker und da deine lib dazuschreiben.

    so long



  • SCha mal in meinen Klassenheader. Da wird gelingt mit einem PRAGMA. Meine Wrapper hat die libmysql.lib bereits gelinkt. deshalb brauchst du die nichtmehr.
    Lediglich die libmysql.dll und die Headerdateien beginnend bei mysql.h



  • @Unix-Tom

    wird ihm nix nützen, da er in diesem fall einen einfachen connect zum testen selber programmiert hat (siehe programm oben).
    dann muss er auch selber linken, ob mit pragma oder einstellungen.. ejal 😉



  • #include <stdio.h>
    #include <mysql.h>
    
    MYSQL * hconnection;
    MYSQL_RES *result_set;
    MYSQL_ROW row_set;
    unsigned int i;
    
    int main(int argc, char *argv[])
    {
       hconnection = mysql_init(NULL);
       if (!hconnection)
       {
          printf(”Fehler bei mysql_init().\n”);
          exit(1);
       }
    
       if (!mysql_real_connect(
                          hconnection,
                          “localhost”,
                          “username”,
                          “password”,
                          “datenbank”,
                          0,
                          NULL,
                          0))
       {
          printf(”Fehler bei mysql_real_connect().\n”);
          printf(“%s\n“,mysql_error(hconnection));
          exit(1);
       }
    
       if (mysql_query(hconnection,“SQL-String“))
       {
          printf(”Fehler bei mysql_query().\n”);
          printf(“%s\n“,mysql_error(hconnetion));
       }
       else
       {
          result_set = mysql_store_result(hconnection);
    
          if (result_set == NULL)
          {
            if (mysql_field_count(hconnection) > 0)
            {
             printf(”Fehler bei mysql_store_result().\n”);
             printf(“%s\n“,mysql_error(hconnetion));
            }
            else
            {
              /* Die Anfrage an den Server war erfolgreich.
                Es wurde keine Ergebnismenge erwartet.
                 Wir können nun die Anzahl der Betroffenen
                  Zeilen ausgeben */
              printf(„Anfrage war Erfolgreich: %lu Zeilen
                     betroffen\n“,(unsigned long)
                     mysql_affected_rows(hconnection));
    
            }
         }
         else
         {
            while((row_set = mysql_fetch_row(result_set))
                   != NULL)
            {
             for(i = 0;i < mysql_num_fields(result_set);i++)
               {
                 printf(“%s\n”,row_set[i]) != NULL ?
                           row_set[i] : “NULL”);
               }
            }
    
            mysql_free_result(result_set);
         }
      }
    
      mysql_close(hconnection);
      exit(0);
    }
    

    Ein funktionierender Client.
    Bei seinem ist schon mysql_init() falsch angewendet.



  • Hallo,

    also ich muß mich jetzt auch mal einmischen, ich hatte das gleiche Problem.

    Mit den Dateien von Unix-Tom funktioniert das ganze aber super und ist auch nicht schwer.

    Gruß
    Frostie



  • hallo

    darum kann es grad nicht gehen.

    wenn ich aus übungszwecken einen connect selber machen möchte, mache ich das.
    was nützen mir fertige wrapper, wenn ich als anfänger mich mit der materie auseinandersetzen möchte.
    hier geht immer was durcheinander.

    klar mag unix-toms wrapper funktional sein. aber lernen ist lernen.

    und es ist darüber hinaus sicher auch nicht falsch, sich mit der mysql++ api von mysql.com auseinanderzusetzen. ich denke, das hat unix tom in seinem buch auch, mal sehen..., denn es gehört zur offiziellen seite der materie.
    die mysql entwickler wissen sicherlich ziemlich genau, wie ihre datenbank schnell und sicher anzusprechen ist.



  • Langsam. Auch wenn MySQL AB sagt das MySQL++ eine API ist, muss es nicht so sein. MySQL++ ist nichts anderes als eine Wrapper-Klasse für die C-API.
    Da ich meine eigene habe, gehe ich auch nicht auf die MySQL++ ein.
    Für mich muss eine API oder Wrapper dazu einfach sein. Einfach kompilieren, einfach einbinden, einfache Befehle. Dies erfüllt MySQL++ nicht. Damals gab es die noch garnicht als ich meine geschrieben habe.



  • Nett, dass ihr alle so viel darüber wisst.. Ich aber nicht... und bei dem funktionierenden Client von Tom krieg ich 85 Fehler. Hier mal nur die in den includes, danach kommen noch welche in der Datei..

    c:\programme\microsoft visual studio\vc98\include\mysql_com.h(116) : error C2146: syntax error : missing ';' before identifier 'fd'
    c:\programme\microsoft visual studio\vc98\include\mysql_com.h(116) : error C2501: 'SOCKET' : missing storage-class or type specifiers
    c:\programme\microsoft visual studio\vc98\include\mysql_com.h(116) : error C2501: 'fd' : missing storage-class or type specifiers
    c:\programme\microsoft visual studio\vc98\include\mysql_com.h(180) : error C2065: 'SOCKET' : undeclared identifier
    c:\programme\microsoft visual studio\vc98\include\mysql_com.h(180) : error C2146: syntax error : missing ')' before identifier 's'
    c:\programme\microsoft visual studio\vc98\include\mysql_com.h(181) : error C2059: syntax error : ')'
    


  • IN die Headerdatei stdafx.h musst du die Headerdatei afxsock.h einbinden. Diese ist normalerweise wenn man ein Projekt erstellt und Socketunterstützung aktiviert automatisch dabei.

    #include <afxsock.h> // MFC-Socket-Erweiterungen

    Ich werde mal ein kl. Project zusammenstellen.



  • Hab jetzt mal nen neues Projekt erstellt, mit MFC, also ich hoffe das ist das mit dem Socket...

    Jetzt krieg ich noch einen Fehler:

    mysql_test.cpp
    mysql_test1.cpp
    c:\programme\microsoft visual studio\myprojects\mysql_test\mysql_test1.cpp(81) : fatal error C1010: unexpected end of file while looking for precompiled header directive
    Generating Code...
    Error executing cl.exe.
    
    mysql_test.exe - 1 error(s), 0 warning(s)
    

Anmelden zum Antworten