昔のメモから。
SmartQV5のLinuxから無線LAN経由で実行すると残念な速度だった。
必要なライブラリ。
[bash]
apt-get install libmysqlclient-dev
[/bash]
あとは適度にプログラム
[cpp]
main.c
#include <stdio.h>
#include <mysql.h>
const char *hostname = "localhost";
const char *username = "hoge";
const char *password = "hoge";
const char *database = "test";
unsigned long portnumber = 0;
/*
* mysql function
*/
int connectDatabase();
MYSQL_RES *query(unsigned char *);
MYSQL_ROW fetchRow(MYSQL_RES *);
void freeResult(MYSQL_RES * );
void closeDatabase();
MYSQL *mysql;
MYSQL_RES *g_res = NULL;
int main(){
MYSQL_RES *res;
MYSQL_ROW row;
if (!connectDatabase()){
printf("error connect databasen");
};
/* INSERT文の実行 */
query("INSERT INTO test VALUES(‘hoge’,’hoge’)");
/* SELECT文の実行 */
res = query("SELECT * FROM test;");
printf("%20s %20s n", "COLUMN_A", "COLUMN_B");
while( (row = fetchRow(res)) != NULL ){
printf("%10s %20s n", row[0], row[1]);
}
closeDatabase();
}
int connectDatabase(){
mysql = mysql_init(NULL);
if (NULL == mysql){
printf("error: %sn", mysql_error(mysql));
return -1;
}
if (NULL == mysql_real_connect(mysql, hostname, username, password, database, portnumber, NULL, 0)){
// error
printf("error: %sn", mysql_error(mysql));
return -1;
} else {
// success
}
return 1;
}
MYSQL_RES *query(unsigned char *sql_string){
if(g_res){
freeResult(g_res);
g_res = NULL;
}
if (mysql_query(mysql, sql_string)) {
printf("error: %sn", mysql_error(mysql));
return NULL;
}
g_res = mysql_use_result(mysql);
return g_res;
}
MYSQL_ROW fetchRow(MYSQL_RES * res){
return mysql_fetch_row(res);
}
void freeResult(MYSQL_RES * res){
mysql_free_result(res);
g_res = NULL;
}
void closeDatabase(){
if(g_res){
freeResult(g_res);
g_res = NULL;
}
mysql_close(mysql);
}
[/cpp]
makefile
[text]
# Makefile
# マクロ定義
CC = gcc
CFLAGS = -O
LDFLAGS =
INCLUDES = -I/usr/include/mysql/
LIBS = -L/usr/lib/mysql/ -lmysqlclient
TARGET = main
OBJS = main.o
# 生成規則
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
clean:
-rm -f $(TARGET) $(OBJS) .nfs* *~ ¥#* core
.c.o:
$(CC) $(CFLAGS) $(INCLUDES) -c $<
main.o:main.c
[/text]
参考
c/c++で MySQL を使う方法 – ぴょぴょぴょ? – Linuxとかプログラミングの覚え書き – http://d.hatena.ne.jp/pyopyopyo/20091219/p1
C言語でMySQLに接続する : fujishinko 雑記帳 http://mblog.excite.co.jp/user/fujishinko/entry/detail/?id=7264344