C语言连接mysql数据库

http://blog.csdn.net/chenming_zhang/article/details/8571207

 

 

操作系统是Linux,需要mysql客户端软件开发库libmysqlclient,这个函数库是mysql的组成部分之一。
一般头文件都在/usr/include/mysql路径下,库文件都在/usr/lib/mysql路径下。
如果没有需要安装mysql-devel包(mysql-devel-5.1.47-4.el6.i686.rpm)
[**@**]# rpm -ivh mysql-devel-5.1.47-4.el6.i686.rpm
安装完成后可以去那两个路径下看看有没有,如果没有就查找一下
[**@**]# find / -name mysql.h
[**@**]# find / -name mysqlclient
看一下路径在哪里。


安装完成后,就可以编译连接C源程序了。


[**@**]# gcc -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient *.c
编译成功即可运行。


解释下:
gcc GNU C/C++编译器
-I指定头文件所在路径(大写i)
-L 指定库文件所在路径
-l 与所需要的动态链接库链接起来(小写L)

这么长的编译命令一般都在make文件里面写了


关于动态链接库可以添加一个环境变量
[**@**]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usrlib/mysql

不过一劳永逸的办法是:将这句话LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usrlib/mysql添加在.bashrc里面


最后源码:

  1. #include <stdio.h>  
  2. #include <mysql.h>  
  3.   
  4. int main(int argc, char *argv[])  
  5. {  
  6.   int i;  
  7.   MYSQL *conn;        // connection to MySQL server  
  8.   MYSQL_RES *result;  // result of SELECT query  
  9.   MYSQL_ROW row;      // one record (row) of SELECT query  
  10.   
  11.   // connect to MySQL  
  12.   conn = mysql_init(NULL);  
  13.   // mysql_options(conn, MYSQL_READ_DEFAULT_GROUP, "myclient");  
  14.   if(mysql_real_connect(  
  15.         conn, "localhost", "root", "uranus", //此处更改用户名密码  
  16.         "mylibrary", 0, NULL, 0) == NULL) {  
  17.       fprintf(stderr, "sorry, no database connection ...\n");  
  18.       return 1;  
  19.     }  
  20.   
  21.   // only if utf8 output is needed  
  22.   mysql_query(conn, "SET NAMES 'utf8'");  
  23.   
  24.   // retrieve list of all publishers in mylibrary  
  25.   const char *sql="SELECT COUNT(titleID), publName \  
  26.                    FROM publishers, titles \  
  27.                    WHERE publishers.publID = titles.publID  \  
  28.                    GROUP BY publishers.publID \  
  29.                    ORDER BY publName";  
  30.   if(mysql_query(conn, sql)) {  
  31.     fprintf(stderr, "%s\n", mysql_error(conn));  
  32.     fprintf(stderr, "Fehlernummer %i\n", mysql_errno(conn));  
  33.     fprintf(stderr, "%s\n", sql);  
  34.     return 1;  
  35.   }  
  36.   
  37.   // process results  
  38.   result = mysql_store_result(conn);  
  39.   if(result==NULL) {  
  40.     if(mysql_error(conn))  
  41.       fprintf(stderr, "%s\n", mysql_error(conn));  
  42.     else  
  43.       fprintf(stderr, "%s\n", "unknown error\n");  
  44.     return 1;  
  45.   }  
  46.   printf("%i records found\n", (int)mysql_num_rows(result));  
  47.   
  48.   // loop through all found rows  
  49.   while((row = mysql_fetch_row(result)) != NULL) {  
  50.     for(i=0; i < mysql_num_fields(result); i++) {  
  51.       if(row[i] == NULL)  
  52.         printf("[NULL]\t");  
  53.       else  
  54.         printf("%s\t", row[i]);  
  55.     }  
  56.     printf("\n");  
  57.   }  
  58.   
  59.   // de-allocate memory of result, close connection  
  60.   mysql_free_result(result);  
  61.   mysql_close(conn);  
  62.   return 0;  
  63. }  

 

posted @ 2013-10-24 11:07  myblogszz  Views(262)  Comments(0)    收藏  举报