以前の記事で、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
:
キタ━(゚∀゚)━! 意外にサクっと成功した。
コメント