J’ai besoin de me connecter à une base MySQL (hébergée en local) depuis un programme en C++, depuis Ubuntu. J’ai jamais vraiment oser tenter l’expérience car il me semblait que c’était compliqué. Une fois les bonnes informations trouvées ce n’est en fait pas trop difficile.
Installation des librairies
Sous Ubuntu et dérivés, il suffit de faire:
sudo apt-get install libmysqlcppconn7 libmysqlcppconn-dev
Sous Fedora, les choses sont un peu plus compliquées.
Pour commencer, il faut installer MySQL et la librairie Boost. Chez moi, cela donnait cela:
sudo dnf install mysql-community-devel-5.6.26-1.fc22.x86_64 sudo dnf install boost-devel-1.57.0-6.fc22.x86_64
Ensuite, on peut télécharger les sources du connector ici: http://dev.mysql.com/downloads/connector/cpp/
Finalement, décompresser l’archive et ouvrir un terminal dans le bon dossier, puis:
cmake . make sudo make install
Utilisation
Voici un exemple de base qui permet la connexion:
#include <iostream> #include "mysql_driver.h" #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include <cppconn/prepared_statement.h> using namespace std; using namespace sql::mysql; int main() { sql::mysql::MySQL_Driver *driver; sql::Connection *con; try { driver = sql::mysql::get_driver_instance( ); con = driver->connect("tcp://127.0.0.1:3306", "user", "password"); } catch (sql::SQLException &e) { cout << "# ERR: SQLException in " << __FILE__; cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl; /* Use what() (derived from std::runtime_error) to fetch the error message */ cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; return EXIT_FAILURE; } return 0; }
L’étape la plus délicate est l’ajout de la librairie au moment du linkage. Si vous compilez en ligne de commande via « g++ », un simple ajout de l’option suivant suffit:
-L/usr/lib -lmysqlcppconn
Dans mon cas, j’essayais de compiler un projet nommé « temp » via CMAKE. Il suffit alors d’ouvrir le fichier CMakeLists.txt et d’ajouter:
find_library(MySQLCONN_LIBRARY mysqlcppconn) target_link_libraries(temp ${MySQLCONN_LIBRARY})
(en remplaçant temp par le nom de votre projet).
On trouve quelques exemples là: http://dev.mysql.com/doc/connector-cpp/en/connector-cpp-getting-started-examples.html
Laisser un commentaire