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里面
最后源码:
- #include <stdio.h>
- #include <mysql.h>
- int main(int argc, char *argv[])
- {
- int i;
- MYSQL *conn; // connection to MySQL server
- MYSQL_RES *result; // result of SELECT query
- MYSQL_ROW row; // one record (row) of SELECT query
- // connect to MySQL
- conn = mysql_init(NULL);
- // mysql_options(conn, MYSQL_READ_DEFAULT_GROUP, "myclient");
- if(mysql_real_connect(
- conn, "localhost", "root", "uranus", //此处更改用户名密码
- "mylibrary", 0, NULL, 0) == NULL) {
- fprintf(stderr, "sorry, no database connection ...\n");
- return 1;
- }
- // only if utf8 output is needed
- mysql_query(conn, "SET NAMES 'utf8'");
- // retrieve list of all publishers in mylibrary
- const char *sql="SELECT COUNT(titleID), publName \
- FROM publishers, titles \
- WHERE publishers.publID = titles.publID \
- GROUP BY publishers.publID \
- ORDER BY publName";
- if(mysql_query(conn, sql)) {
- fprintf(stderr, "%s\n", mysql_error(conn));
- fprintf(stderr, "Fehlernummer %i\n", mysql_errno(conn));
- fprintf(stderr, "%s\n", sql);
- return 1;
- }
- // process results
- result = mysql_store_result(conn);
- if(result==NULL) {
- if(mysql_error(conn))
- fprintf(stderr, "%s\n", mysql_error(conn));
- else
- fprintf(stderr, "%s\n", "unknown error\n");
- return 1;
- }
- printf("%i records found\n", (int)mysql_num_rows(result));
- // loop through all found rows
- while((row = mysql_fetch_row(result)) != NULL) {
- for(i=0; i < mysql_num_fields(result); i++) {
- if(row[i] == NULL)
- printf("[NULL]\t");
- else
- printf("%s\t", row[i]);
- }
- printf("\n");
- }
- // de-allocate memory of result, close connection
- mysql_free_result(result);
- mysql_close(conn);
- return 0;
- }

浙公网安备 33010602011771号