2010年2月5日

C言語からMySQLに接続する

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

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

ソースコード:mysqltest.c
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <mysql.h>  
  4.   
  5. #define MYSQL_SERVER "localhost"  
  6. #define MYSQL_USERNAME "USER"  
  7. #define MYSQL_PASSWORD "PASSWORD"  
  8. #define MYSQL_DATABASE "mysql"  
  9. #define MYSQL_PORT 3306  
  10. #define MYSQL_SOCKET NULL  
  11. #define MYSQL_OPT 0  
  12.   
  13. int main()  
  14. {  
  15.     MYSQL *connect;  
  16.     MYSQL_RES *result;  
  17.     MYSQL_ROW row;  
  18.   
  19.     connect = mysql_init(NULL);  
  20.     if (!mysql_real_connect(connect, MYSQL_SERVER, MYSQL_USERNAME,  
  21.             MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_PORT,  
  22.             MYSQL_SOCKET, MYSQL_OPT)) {  
  23.         fprintf(stderr, "%s\n", mysql_error(connect));  
  24.         exit(1);  
  25.     }  
  26.   
  27.     if (mysql_query(connect, "show tables")) {  
  28.         fprintf(stderr, "%s\n", mysql_error(connect));  
  29.         exit(1);  
  30.     }  
  31.   
  32.     result = mysql_use_result(connect);  
  33.   
  34.     printf("----MySQL Tables in '%s' database -----\n",  
  35.         MYSQL_DATABASE);  
  36.     while ((row = mysql_fetch_row(result)) != NULL) {  
  37.         printf("%s\n", row[0]);  
  38.     }  
  39.   
  40.     mysql_free_result(result);  
  41.     mysql_close(connect);  
  42. }  

コンパイル: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 件のコメント:

コメントを投稿