C++ で MAMP の MySQL に接続する

以前の記事で、CentOS 上で C から MySQL に接続したが、今回は Mac 上で C++ から MAMP の MySQL に接続してみる。

まずこの記事の手順で、MySQL のヘッダファイルやライブラリを用意しておく。うまくいけば次のようなファイルができる。

  • /Applications/MAMP/Library/include/mysql/mysql.h
  • /Applications/MAMP/Library/lib/libmysqlclient.dylib

C のときと同じように、MySQL に接続するプログラムを書く。

$ vi mysqltest.cpp

[cc lang=”c”]#include
#include

#define DBHOST “localhost”
#define DBPORT 8889
#define DBUSER “root”
#define DBPASS “root”
#define DBNAME “mysql”

int main()
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

// 接続
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, DBHOST, DBUSER, DBPASS, DBNAME, DBPORT, NULL, 0)) {
fprintf(stderr, “%s\n”, mysql_error(conn));
exit(1);
}

// クエリ発行
if (mysql_query(conn, “show tables”)) {
fprintf(stderr, “%s\n”, mysql_error(conn));
exit(1);
}

// 結果表示
res = mysql_use_result(conn);
while ((row = mysql_fetch_row(res)) != NULL) {
std::cout << row[0] << "\n"; } mysql_free_result(res); // 切断 mysql_close(conn); return 0; }

コンパイル時にオプションを色々付けるのが面倒なので、Makefile を作成する。

$ vi Makefile
CXX      = g++
LDLIBS   = -lm -lmysqlclient
CXXFLAGS = -Wall -I/Applications/MAMP/Library/include
LDFLAGS  = -L/Applications/MAMP/Library/lib

mysqltest: mysqltest.cpp
	$(CXX) -o $@ $(LDLIBS) $(CXXFLAGS) $(LDFLAGS) $^
# ↑ここはスペースでなくタブ

make する。

$ make
c++ -o mysqltest -lm -lmysqlclient -Wall -I/Applications/MAMP/Library/include -L/Applications/MAMP/Library/lib mysqltest.cpp

できあがったバイナリを実行してみる。

$ ./mysqltest
columns_priv
db
event
func
  :

キタ━(゚∀゚)━! 意外にサクっと成功した。

コメント

タイトルとURLをコピーしました