2010年2月5日

C言語からMySQLに接続する

覚えたてのC言語でMySQLへの接続を試してみたいと思います。

環境:
  • CentOS 5.4
  • MySQL 5.1.43
  • gcc 4.1.2

ソースコード:mysqltest.c
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>

#define MYSQL_SERVER "localhost"
#define MYSQL_USERNAME "USER"
#define MYSQL_PASSWORD "PASSWORD"
#define MYSQL_DATABASE "mysql"
#define MYSQL_PORT 3306
#define MYSQL_SOCKET NULL
#define MYSQL_OPT 0

int main()
{
    MYSQL *connect;
    MYSQL_RES *result;
    MYSQL_ROW row;

    connect = mysql_init(NULL);
    if (!mysql_real_connect(connect, MYSQL_SERVER, MYSQL_USERNAME,
            MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_PORT,
            MYSQL_SOCKET, MYSQL_OPT)) {
        fprintf(stderr, "%s\n", mysql_error(connect));
        exit(1);
    }

    if (mysql_query(connect, "show tables")) {
        fprintf(stderr, "%s\n", mysql_error(connect));
        exit(1);
    }

    result = mysql_use_result(connect);

    printf("----MySQL Tables in '%s' database -----\n",
        MYSQL_DATABASE);
    while ((row = mysql_fetch_row(result)) != NULL) {
        printf("%s\n", row[0]);
    }

    mysql_free_result(result);
    mysql_close(connect);
}

コンパイル:mysqltestの作成
[user@centos ~]$ gcc -o mysqltest \
 -I /usr/include/mysql/ \
 -L /usr/lib/mysql/ \
 -l mysqlclient \
 mysqltest.c

プログラムの実行
[user@centos ~]$ ./mysqltest
----MySQL Tables in 'mysql' database -----
columns_priv
db
event
func
general_log
help_category
help_keyword
help_relation
help_topic
host
ndb_binlog_index
plugin
proc
procs_priv
servers
slow_log
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
user

よし、できた。
次は、httpアクセスをやるぞ~

0 件のコメント:

コメントを投稿