日期:2014-05-16  浏览次数:20719 次

ubuntu下c与mysql的交互

mysql早装好了,最近想让C与sql进行交互,总是"error: mysql.h: 没有那个文件或目录"

以下是从网上找的解决方法,主要是未安装开发包,以及gcc参数问题:

?

?

1:先安装MySQL
sudo apt-get install mysql-server mysql-client
2:再装开发包

sudo apt-get install libmysqlclient15-dev

此时头文件会出现在/usr/include/mysql/里

3:安装完以后,C代码里添加头文件
#include <mysql.h>

4:编译方法:
方法1:gcc $(mysql_config --cflags) xxx.c -o xxx $(mysql_config --libs)

方法2:gcc xxx.c -o xxx $(mysql_config --cflags) $(mysql_config --libs)

方法3:gcc test.c -o test $(mysql_config --cflags --libs) ?

?

?

?

5:可以用代码测试一下

代码:
/* Simple C program that connects to MySQL Database server*/
#include <mysql.h>
#include <stdio.h>

main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

char *server = "localhost";
char *user = "root";
char *password = ""; /* 此处改成你的密码 */
char *database = "mysql";/*安装mysql时自带的一个db*/

conn = mysql_init(NULL);

/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

/* send SQL query */
if (mysql_query(conn, "show tables")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

res = mysql_use_result(conn);

/* output table name */
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[0]);

/* close connection */
mysql_free_result(res);
mysql_close(conn);
}
//////////
编译后运行会输出现有数据库和表内容。

?

//来源网址

【http://hi.baidu.com/zznoip/blog/item/5e221ead10c5dfc17cd92a58.html】2011/5/22