Datenbank und C++
-
Irgendwie bekomme ich einfach keine Datenbankverbindung hin. Schon beim includen der Headerdatei macht er Probleme. Ich habe nun knapp eine Stunde gewerkelt, aber ich komme nicht weiter. Kann mir jemand sagen, warum das nicht klappt?
#include <iostream> #include <string> #include <conio.h> #include <stdlib.h> #if defined __WIN32__ || _MSC_VER #include <windows.h> #endif #include <mysql.h> using namespace std;
Er sagt dabei immer: fatal error C1083: Include-Datei kann nicht geöffnet werden: 'mysql.h': No such file or directory
Was kann ich dagegen tun?
-
Trag den Pfad zu der mysql.h in den Include Path des Compilers ein.
-
ProgChild schrieb:
Trag den Pfad zu der mysql.h in den Include Path des Compilers ein.
erstens das, und danach wirst du viele andere lustige Fehlerchen bekommen, daher mußt du noch vor dem mysql.h include die winsock2.h includen, dann kannst du's probeweise fehlerlos kompilieren
-
Also ich habe auch ohne die winsock2.h keine Fehler. Ich programmiere momentan für die Console - ist das dabei nicht so wichtig?
EDIT: Oh, ich bekomme doch Fehler, allerdings ändern winsock2.h auch nichts daran... Die Fehler sehen folgendermaßen aus:
Nicht aufgelöstes externes Symbol '_mysql_close@4', verwiesen in Funktion '"void __cdecl mysql_disconnect(void)" (?mysql_disconnect@@YAXXZ)'
Nicht aufgelöstes externes Symbol '_mysql_errno@4', verwiesen in Funktion '"void __cdecl check_error(void)" (?check_error@@YAXXZ)'Von der Sorte halt 5 Fehler. Kann mir jemand sagen, was da noch falsch ist?
-
...da fehlt wohl noch eine Lib, die Du mitlinken musst.
-
Das habe ich inzwischen rausgefunden gehabt. Die Frage ist nur welche Lib mir fehlt und wo sie mir fehlt..... Arbeite mit Microsoft .Net 2003. Dort habe ich unter Extras -> Optionen -> Projekte -> VC++-Verzeichnisse unter dem Punkt "Includedateien" C:\Programme\mysql4\include hinzugefügt und unter "Bibliothekdateien" C:\Programme\mysql4\lib\opt\. Fehlt mir da noch was? Muss ich irgendwo noch was hinzufügen?
-
Im MySQL-Verzeichnis sind neben den *.h-Datein auch noch ein Verzeichnis mit dem Namen "Lib". Dort findest du die benötigte libmysql.lib Datei. Die muss dem Projekt hinzugefügt werden. Damit dein Programm dann auf funktioniert, muss zur laufzeit im Programmverzeichnis die libmysql.dll vorhanden sein (diese muss mit deinem Programm dann auch immer mitgegeben werden).
mfg
xXx
-
Oh, das ist aber nicht besonders schön, dass man die immer mitgeben muss... Aber es funktioniert jetzt auf jeden Fall. Vielen herzlichen Dank!
-
Irgendwie will das nicht so richtig. Versuche jetzt schon ne ganze Weile, komme aber einfach nicht so richtig vorwärts. Konkret geht es um diesen Quelltext:
#include <iostream> #include <string> #include <conio.h> #if defined __WIN32__ || _MSC_VER #include <windows.h> #endif #include <mysql.h> using namespace std; MYSQL *mysql; //Funktionsprototypen void wait(void); void mysql_connect(void); void mysql_disconnect(void); void check_error(void); // MAIN MAIN MAIN MAIN MAIN MAIN MAIN int main(void){ MYSQL_ROW row; MYSQL_RES *res; MYSQL_FIELD *field; mysql_connect(); mysql_query(mysql, "SELECT wert FROM test"); check_error(); res=mysql_store_result(mysql); check_error(); row = mysql_fetch_row (res); cout << row[i] << endl; mysql_disconnect(); wait(); return 0; } //Datenbankverbindung herstellen void mysql_connect(){ mysql=mysql_init(mysql); check_error(); //Zugansdaten entfernt mysql_real_connect(mysql, "****", "****", "****", NULL, 0, NULL, 0); check_error(); } //Datenbankverbindung beenden void mysql_disconnect(){ mysql_close(mysql); } //Auf Fehler überprüfen void check_error(){ if (mysql_errno(mysql) != 0){ cerr << "Fehler: " << mysql_error(mysql); exit(1); } } //Funktion zum Warten auf einen beliebigen Tastendruck void wait (){ FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); getch(); }
Sollte eigentlich ne ganz einfache Abfrage sein. Übrigens habe ich bei PHP immer mit mysql_fetch_array gearbeitet. Gibt es so einen Befehl bei C++? Wie kann ich ihn ansprechen?
-
Hat sich schon gelöst, habe mysql_select_db(); vergessen...
-
Hallo, ich habe mal den Code in Dev C++ und Turbo C++ ausprobiert, alle Pfade angegeben bei Dev C++ dann sogar noch beim Linker angegeben die libmysql.lib von MySQL direkt einzubinden, jedoch kommen sowohl bei Turbo C++ und Dev C++ immerwieder dieselben Linkerfehler.
libmysql.lib hab ich jetzt noch zusätzlich im Projektverzeichnis, im Lib verzeichnis von Borland und von Dev C++ und diversen anderen Verzeichnissen reinkopiert - Pfadangaben beim Linker und die Lib überall reinkopieren helfen also nichts...[Linker error] undefined reference to `mysql_init@4'
[Linker Fehler] Error: Ungelöste externe 'mysql_init' referenziert von C:\DOKUMENTE UND EINSTELLUNGEN\JACKY\EIGENE DATEIEN\BORLAND STUDIO PROJECTS\DEBUG_BUILD\MYSQL_TEST.OBJ