MySQL Connector/C++を導入してみた
MySQL Connector/C++を入れる機会があって少し悩んだのでメモ。
公式からソースコードをDLし*1makeするとmysql.hとerrmsg.hがみつからないと言われる。
ぐぐってみるとこれらはmysqlには含まれず、mysql-develに含まれるらしいので
sudo yum install mysql-devel
としてインストール。
そしてふたたび
cmake . make clean sudo make sudo make install
とすることでインストールできた。
念の為動作確認を行う。(ユーザ名・パスワードは適宜変更してください。)
#include<memory> #include<mysql_connection.h> #include<mysql_driver.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> int main(){ auto driver = sql::mysql::get_mysql_driver_instance(); auto raw_con =driver->connect("localhost", "mysqluser", "mysqlpass"); auto con = std::shared_ptr<sql::Connection>(raw_con); auto raw_stmt = con->createStatement(); auto stmt = std::shared_ptr<sql::Statement>(raw_stmt); auto raw_res = stmt->executeQuery("SHOW DATABASES"); auto res = std::shared_ptr<sql::ResultSet>(raw_res); while (res->next()) { std::cout << res->getString("DataBase") << std::endl; } }
コンパイルは
g++ -lmysqlcppconn -std=c++0x main.cpp
とlibmysqlcppconnの場所を教えてあげないといけない。
コンパイルできたら実行してデータベース一覧が表示されれば成功。
ちなみにMySQL Connector/C++を叩かなくてもWt::DboというORマッパーが存在するのでそちらを利用したほうが通常は捗るような気がする。
*1:ユーザ登録しなくちゃいけなかったりとひじょーにだるい。めったにDLしないからパスワードとか忘れるし...改善して欲しい