Mysql Verbindung mit Visual Studio



  • Hat jemand ein tutorial, dass für Microsoft Visual C++ 2010 Express funktioniert? Als Konsolenanwendung.



  • ...



  • Ich denke, ich mache da etwas grundsätzlich falsch. Habe den Cod emit meinen Zugangsdaten verwendet.

    #include <my_global.h>
    #include <mysql.h>
    
    int main(int argc, char **argv)
    {
    
      MYSQL *conn;
      MYSQL_RES *result;
      MYSQL_ROW row;
      int num_fields;
      int i;
    
      conn = mysql_init(NULL);
      mysql_real_connect(conn, "localhost", "zetcode", "passwd", "testdb", 0, NULL, 0);
    
      mysql_query(conn, "SELECT * FROM writers");
      result = mysql_store_result(conn);
    
      num_fields = mysql_num_fields(result);
    
      while ((row = mysql_fetch_row(result)))
      {
          for(i = 0; i < num_fields; i++)
          {
              printf("%s ", row[i] ? row[i] : "NULL");
          }
          printf("\n");
      }
    
      mysql_free_result(result);
      mysql_close(conn);
    
    }
    

    Da bekomme ich den Fehler

    1>------ Erstellen gestartet: Projekt: sql, Konfiguration: Debug Win32 ------
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_close@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_free_result@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_fetch_row@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_num_fields@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_store_result@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_query@8" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_real_connect@32" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_init@4" in Funktion "_main".
    1>D:\Visual Studio 2010\Projects\sql\Debug\sql.exe : fatal error LNK1120: 8 nicht aufgelöste externe Verweise.
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    


  • ...



  • Das habe ich.

    http://s14.directupload.net/images/130218/temp/st5n8km3.png

    __EDIT__

    so, habe das ganze Projekt nochmal gelöscht und neu angefangen.

    Es scheint als wäre ich einen kleinen schritt weiter.

    #include<iostream>
    #include <windows.h>
    #include <stdio.h>
    #include <mysql.h>
    
    using namespace std;
    MYSQL mysql;
    MYSQL * conn ;  
    
    int main()
    {
    
      mysql_init( &mysql ) ;
    
      conn = mysql_real_connect(  &mysql,
                                  "xx", //host
                                  "xx", //user
                                  "xx", //pass      
                                  "xx", //db
    							  3306, // port
                                  0,    // unix_socket (not in use)
    							  0 ) ; // client flag:  usually 0
    
      if( conn == NULL )
      {
        cout <<"Keine Verbindung zur Datenbank" <<endl;
    
      }
      else
      {
       cout <<"Erfolgreich verbunden" <<endl;
    
      }
      system("pause");
    
       mysql_close( conn ) ;
      return 0;
    }
    

    Wenn ich da jetzt meine Zugangsdaten eintrage, dann bekomme ich keine Verbindung. "Keine Verbindung zur Datenbank". Wenn ich aber die identischen Zugangsdaten in PHP verwende, dann bekomme ich eine Verbindung. Also sind die zugnagsdaten richtig. Somit muss das an dem Skript liegen. Ich verwende MySQL5 von einem Webhoster. Woran könnte das liegen?

    __EDIT 2__

    Liegt an dem Webserver, der lässt keine Verbindung von aussen zu. Habe jetzt ein wenig gegoogelt und bin auf SSH-Tunnel gestossen. So soll das gehen. aber wie genau geht das?



  • Hat jemand evtl. ein Beispielcode wie ich openssh verwenden kann? Im Internet ist das ziemlich zäh etwas zu finden.



  • Ich glaube kaum das du einen Webhoster finden wirst der mysql von aussen zulässt.
    Es gibt da diverse PHP zu mysql Brücken.
    MysqlFactory ist evtl. eine schnelle Lösung für dich.
    Ansonsten gameserver für 30€ pro Jahr mieten und mysql installieren ...



  • Hallo,

    ich meinte eig. ein Beispiel oder tutorial wie man das in C++ machen könnte.



  • Doch Du bekommst Antwort im Internet:
    Datenbankverbindung mit MySql und Visual Studio
    http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-apps-windows-visual-studio.html
    Von dort kann man dann das durchs Referenzmanual navigieren.



  • Das ist aber ohne SSH. Oder übersehe ich da was?

    Die verbindung zum Netzwerkinternen Datenbank geht. Es scheitert nur an der Onlinedatenbank im Netz, weil die nicht von ausser erreichbar ist. Deswegen wird im Internet sehr SSH Tunnel empfohlen.

    Nur wie amn die am Ende herstellt mit C++ das ist mir noch nicht ganz klar.


Anmelden zum Antworten