因为工作需要, 所以写了这个关于LINUX C操作MYSQL数据库的Demo, 欢迎各位大牛指正.

上代码: cmysql.h

 

 
  
  1. #include "/usr/include/mysql/mysql.h" 
  2. #include <string.h> 
  3. #include <stdlib.h> 
  4. #include <stdio.h> 
  5.  
  6. #define HOST "192.168.16.178" 
  7. #define USERNAME "root" 
  8. #define PASSWORD "123456" 
  9. #define DATABASE "demo" 
  10.  
  11.  
  12. extern int bt_connect(MYSQL * my_conn); 
  13. extern int bt_select(MYSQL * my_conn, char * sql, MYSQL_RES ** res_ptr); 
  14. extern int bt_close_db(MYSQL * my_conn); 

cmysql.c

 

 
  
  1. #include "cmysql.h" 
  2.  
  3. int main(void) 
  4.         MYSQL my_conn; 
  5.         MYSQL_RES * res_ptr; 
  6.  
  7.         MYSQL_FIELD * field; 
  8.         MYSQL_ROW result_row; 
  9.         int row = 0column = 0
  10.         int i, j; 
  11.  
  12.         if (bt_connect(&my_conn) == -1) 
  13.         { 
  14.                 printf("连接数据库失败!\n"); 
  15.                 return -1; 
  16.         } 
  17.         if (bt_select(&my_conn, "select * from member", &res_ptr) == -1) 
  18.         { 
  19.                 printf("Error: 查询失败!\n"); 
  20.                 return -2; 
  21.         } 
  22.         //printf("结果传出的指针: %d\n", *res_ptr);      
  23.  
  24.         if (res_ptr) // 查询到值, 不为空 
  25.         { 
  26.                 column = mysql_num_fields(res_ptr); 
  27.                 row = mysql_num_rows(res_ptr) + 1; 
  28.                 printf("共有 %d 列!\n", column); 
  29.                 printf("查询到 %d 行!\n", row); 
  30.  
  31.                 for (i = 0field = mysql_fetch_field(res_ptr); i++) 
  32.                 { 
  33.                         printf("%s\t", field->name); 
  34.                 } 
  35.                 printf("\n"); 
  36.  
  37.                 //按行输出结果 
  38.                 for (i = 1; i < row; i++) 
  39.                 { 
  40.                         result_row = mysql_fetch_row(res_ptr); 
  41.                         for (j = 0; j < column; j++) 
  42.                         { 
  43.                                 printf("%s\t", result_row[j]); 
  44.                         } 
  45.                         printf("\n"); 
  46.                 } 
  47.         } 
  48.         bt_close_db(&my_conn); 
  49.  
  50.  
  51.         return 0; 
  52.  
  53. extern int bt_connect(MYSQL * my_conn) 
  54.         mysql_init(my_conn); 
  55.  
  56.         if (mysql_real_connect(my_conn, HOST, USERNAME, PASSWORD, 
  57.                 DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) 
  58.         { 
  59.                 printf("连接数据库成功!\n"); 
  60.                 return 0; 
  61.         } 
  62.         else 
  63.         { 
  64.                 return -1; 
  65.         } 
  66.  
  67. extern int bt_select(MYSQL * my_conn, char * sql, MYSQL_RES ** res_ptr) 
  68.         int res; // sql执行返回标志 
  69.  
  70.         mysql_query(my_conn, "SET NAMES UTF8"); 
  71.  
  72.         res = mysql_query(my_conn, sql); 
  73.         //printf("%s\n", sql); 
  74.         if (res) // 执行失败 
  75.         { 
  76.                 // printf("Error: 查询失败!\n"); 
  77.                 return -1; 
  78.         } 
  79.         else 
  80.         { 
  81.                 *res_ptr = mysql_store_result(my_conn); 
  82.                 //printf("结果指针: %d\n", *res_ptr);    
  83.                 return 0; 
  84.         } 
  85.  
  86. extern int bt_close_db(MYSQL * my_conn) 
  87.         mysql_close(my_conn); 
  88.         return 0; 

最近编译安装:

gcc -o mysqlDemo cmysql.h cmysql.c -L /usr/local/mysql/lib/*.a -lpthread -ldl
-lz

转载请注明来自派啦网