My SQL CPP Connector
-
Hallo Leute,
ich versuche gerade über ein CPP Programm eine Verbindung zu meiner MySQl Datenbank aufzubauen, sodass ich im ersten Schritt in CPP einen String zur Abfrage abschicken kann und im Terminal eine Ausgabe bekomme.
Vorab: Ich benutze Eclipse in Linux Mint.
Ich habe eine Datenbank mit MySQL-Workbench erstellt. Ich habe einen SQL Client laufen und der schein zu funktionieren, denn ich kann in der Shell/Terminal den Server starten, Abfragen ausführen und bekomme ein Ergebnis angezeigt. Ich habe mich dabei an einem Beispiel von MYSQL-Webseite orientiert.
Jetzt habe ich einfach ein Beispielprogramm von der gleichen Webseite kopiert und wollte das Programm ausführen. Leider funktioniert es nicht ganz.
Hier der Code: Link1
Was ich bisher gemacht habe:
1. Ich habe das Paket heruntergeladen und die includes bzw. libs eingebunden
2. boost paket runtergeladen und beides eingebunden
3. -l mysqlcppconn eingebundenIch weiß leider nicht ob ich die Verzeichnisse richtig eingebunden habe oder nicht, zumindenst sind die "#include "xyz.h"" erkannt.
Es gibt aber Probleme mit folgender darstellung des Codes:
cout << "Running 'SELECT 'Hello World!' » AS _message'..." << endl;
sowie
cout << "(" << __FUNCTION__ << ") on line " » << __LINE__ << endl;
Ich hoffe ihr könnt mir da weoterhelfen. Falls Informationen fehlen sollten, sagt rug#hig bescheid. Ich versuche nur ein Programm zu schreiben das ich als referenz für weitere Abfragen nutzen kann vllt. ich das Programm auch nicht geeignet.
Vielen dank im voraus!
-
pluxyy schrieb:
Es gibt aber Probleme mit folgender darstellung des Codes:
Das bedeutet konkret?
-
pluxyy schrieb:
cout << "Running 'SELECT 'Hello World!' » AS _message'..." << endl;
sowie
cout << "(" << __FUNCTION__ << ") on line " » << __LINE__ << endl;
Sieht fuer mich so aus, als sollte da statt dem » ein Zeilenumbruch stehen.
-
Zumindest ist dieser Teil des Codes rot unterstrichen;
Wenn ich en Code compiliere werden mir fehler angezeigt, die sich auf diese Zeilen beziehen.Siehe fehlermeldung:
Error MessageFehler wie er im Editor angezeigt wird:
Error 2
-
@ nman
meinst du das dort eigentlich ein "\n" hin sollte, oder garnichts?
wie auch immer ich habe beides ausprobiert, leider ändert das nichts am ergebnis. Auch die Fehlermeldungen sind die gleichen.
-
cout << "Running 'SELECT 'Hello World!' AS _message'..." << endl;
sowie
cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
-
Vielen Dank,
für eure Hilfe. Zumindest sind die Fehler weg.
Aber jetzt werden mir "interne Fehler" angezeigt, die über catch abgefangen werden. Ich weiß nicht ob jemand on euch schon Erfahrung gemacht hat mit MySQL verbindungen. Kann es sein, dass meine Datenbank mehr zulassen soll? Also dass sie nur leseberechtigungen ergibt, aber auch beschrieben werden können muss. Leider finde ich die entsprechenden EInstellungen auch nicht in der Workbench. Evtl. gibt es sowas garnichtDas sind die fehler
Fehler
-
Das ist jetzt offensichtlich keine weitere Frage zu C++ sondern zu mysql => falsches Forum
Wenn du mit deiner IDE umgehen könntest, müsstest du nicht immer Bilder von unvollständigen Fehlermeldungen verlinken, sondern könntest den vollständigen Text hier zeigen. Das wäre sicher hilfreich.
-
Danke auch Dir mani66 für deinen hilfreichen Beitrag... kann halt nicht jeder ein Profi wie du sein!
-
Kopier doch einfach deine Fehlermeldungen als Text hier rein. Hier gibt es einige Leute (mich eingeschlossen), die im Normalfall keine Fehlermeldungen aus Screenshots und von Pastebin oä. raussuchen.
-
Vielleicht habe ich mich falsch ausgedrückt, oder ich verstehe es falsch.
Fehlermeldungen in dem Sinne, dass mit die IDE einen Fehler zurück gibt, habe ich keinen mehr.
Ich bekomme lediglich in der Konsole einen Fehler seitens des Cpp-Programms
Running 'SELECT 'Hello World!' AS _message'... # ERR: SQLException in ../framework.cpp(main) on line 73 # ERR: MySQL_Connection::setReadOnly() (MySQL error code: 0, SQLState: )
} catch (sql::SQLException &e) { cout << "# ERR: SQLException in " << __FILE__; cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl; // Das hier ist Zeile 73 cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; }
Deswegen habe ich auch in meiner zweiten Frage geschrieben, dass falls mir einer helfen kann, ich sehr dankbar darüber wäre, aber natürlich kann ich es verstehen, wenn hier im Forum erstmal keine Antwort kommt, da das ectl. ein MySQl spezifischer Fall ist.
...vllt. liege ich aber auch ganz falsch ....
-
Da du den Code von der offiziellen MySQL Homepage hast nehme ich erstmal an, dass dieser fehlerfrei ist. Ich vermute eher ein Problem bei der Kommunikation mit dem MySQL Server. Der Server läuft definitiv, der Port und die Zugangsdaten stimmen?
-
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
@sebi707 ja, den Code habe ich von der MySQL Webseite. Host, User und PW sind natürlich angepasst.Mit den gleichen Zugangsdaten (Host, PW und USER) kann ich über das Terminal den Server starten bzw. eine Verbindung herstellen und Daten abfragen und Daten abänder, also Tabellen schreiben.
Ich habe schon versucht über Commandlinebefehle mit dem Befehl system()[also in cpp] eine Verbindung aufzubauen. Bei diesem Ansazt scheiter ich aber bei der PW eingabe. Die Dhell frägt nämlich nach dem Passwort, das eingegeben werden soll. Im Cpp habe ich erstmal keine möglichkeit gesehen das Passwort einzugeben, also auf das Prompt zu reagieren [Ich befasse mich mittlerweile mit dem popen()-Befehl, aber verlier immerweiter den Blick vom Wesentlichen ].Dann steck ich fest und kann natürlich nicht weiter programmieren. Unabhängig von diesem Ansatz, muss ich doch auch über den MySQL-CPP-Connector eine Verbindung herstellen können.
-
schau dir mal das an, hoff das hilft dir, dort werden mögliche ursachen der fehlermeldung und deren lösung erläutert.
kann das gerade leider nicht nachvollziehen oder testen...http://stackoverflow.com/questions/28462633/mysql-connector-for-c-mysql-connectionsetreadonly-exception-on-setschema
http://www.tech.theplayhub.com/mysql_connector_for_c__mysql_connectionsetreadonly_exception_on_setschema/
-
pluxyy schrieb:
Fehlermeldungen in dem Sinne, dass mit die IDE einen Fehler zurück gibt, habe ich keinen mehr.
Ich bekomme lediglich in der Konsole einen Fehler seitens des Cpp-Programms
Running 'SELECT 'Hello World!' AS _message'... # ERR: SQLException in ../framework.cpp(main) on line 73 # ERR: MySQL_Connection::setReadOnly() (MySQL error code: 0, SQLState: )
Passt schon, genau das wollte ich sehen. "MySQL error code: 0" bedeutet, dass dein Code keine Verbindung zum Server aufbauen konnte.
Bist du dir ganz sicher, dass a) der Server auch wirklich läuft, b) die Zugangsdaten (Username/Passwort) stimmen und c) sich dein Commandline-Client wirklich per TCP und nicht per Unix Domain Socket verbindet?
Das hier sollte funktionieren:
mysql --user=IRGENDEIN_BENUTZER --password=IRGENDEIN_PASSWORT \ --host=127.0.0.1 --port=3306 IRGENDEINE_DB
edit: Nix mit Windows.