MySQL++

概要

MySQLをC++から利用するwrapper。

MySQL++(本家web page)

参考

install

MySQLはインストール済みとする。 ここからソースファイルを落としてくる。 /home/username/opt/mysql++にインストールの場合:

pwd
/home/username/make/mysql++
ls
mysql++-3.0.9_00  mysql++-3.0.9.tar.gz
cd mysql++-3.0.9_00/
mkdir -p /home/username/opt/pkgs/mysql++-3.0.9/
./configure --prefix=/home/username/opt/pkgs/mysql++-3.0.9/
make
make install
ln -s /home/username/opt/pkgs/mysql++-3.0.9 /home/username/opt/mysql++

コンパイルオプション

MySQLのヘッダーと、MySQL++のヘッダーと、MySQL++ライブラリ及びLD_LIBRARY_PATHの設定が必要:

-I/usr/include/mysql -I/home/username/opt/mysql++/include/mysql++/ -L/home/username/opt/mysql++/lib/ -lmysqlpp
# PATH for mysql++
export LD_LIBRARY_PATH=${HOME}/opt/mysql++/lib:$LD_LIBRARY_PATH

Tips

template

#include <iostream>
#include <mysql++.h>
#include <boost/shared_ptr.hpp>

namespace{
  const char *user = "quiet" ;
  const char *passwd = "hoge" ;
  const char *db = "quiet_data" ;
  const char *host = "127.0.0.1" ;
  const uint port = 3306 ;
};

int main(int argc,char **argv)
{
  boost::shared_ptr<mysqlpp::Connection> conn = boost::shared_ptr<mysqlpp::Connection>(new mysqlpp::Connection(false)) ;
  if( conn->connect(db,host,user,passwd,port) ){
    // get data
    mysqlpp::Query query = conn->query() ;

    query << " SELECT  begin_time, end_time, comment "
          << " FROM w91_run_log "
          << " WHERE state=\'Done\' AND run_type=\'Calib\' and comment REGEXP \'horn\' "
          << " AND ( "
          << " object=\'TauA\' OR object=\'tau a\' OR object=\'TauaA\' "
          << " ) "
          << " ORDER BY begin_time "
          << " ; " ;
    mysqlpp::StoreQueryResult res = query.store() ;
  }
  else{
    std::cerr << "Failed to connect MySQL: " << conn->error() << std::endl ;
    exit(EXIT_FAILURE) ;
  }

  return 0 ;
}