1.安装mysql
安装命令:$sudo apt-get install mysql-server mysql-client
2.安装MySQL的开发库
安装命令:$sudo apt-get install libmysqlclient-dev
C APIs 包含在 mysqlclient 库文件中,安装成功后,相关文件如下:
头文件在/usr/include/mysql目录下;
库文件在/usr/lib/mysql和/usr/lib目录下;
3.代码(文件名:mysql.c)
#include <stdio.h>
#include <string.h>
#include <mysql.h>
int main(int argc, char *argv[])
{
MYSQL conn;
MYSQL_RES *res;
MYSQL_ROW row;
int s,t;
char *server = "localhost";//服务器地址(这里是本地)
char *user = "root";//用户名
char *password = "1234";//密码
char *database = "mysql";//数据库名
//初始化mysql结构
mysql_init(&conn);
//mysql默认端口为3306
if(!mysql_real_connect(&conn,server,user,password,database,3306,NULL,0))
{
printf("数据库连接发生错误: %s\n", mysql_error(&conn));
}
else
{
printf("数据库连接成功!\n");
}
//解决读取中文时可能会出现的乱码问题
s = mysql_query(&conn, "set names 'utf8'");
//执行'读取students表中的所有数据'的SQL'查询
t = mysql_query(&conn, "select * from students");
if(s || t)
printf("查询语句错误: %s\n",mysql_error(&conn));
else
{
//检索完整的结果集至客户端
res = mysql_store_result(&conn);
while(row = mysql_fetch_row(res)) //从结果集中获取下一行
{
for(t = 0; t < mysql_num_fields(res); t++) //返回结果集中的列数
printf("%s",row[t]);
printf("\n");
}
}
//释放结果集的空间
mysql_free_result(res);
//关闭服务器连接
mysql_close(&conn);
return 0;
}
4.编译:
编译命令:
gcc mysql.c -o mysql -I /usr/include/mysql -L /usr/lib -lmysqlclient (注意:-I 是大写的 i,不是小写的 L)
编译 :gcc -c mysql.c -I /usr/include/mysql/
这里的-I 是指定头文件目录 -c 是编译成目标代码连接 :gcc mysql.o -o test -L /usr/lib/ -lmysqlclient
这里的-L是指定库文件路径 这个参数-lmysqlclient是因为 C API代码包含在mysqlclient库中,正因为有了它才允许C程序访问数据库
5.参考
1.Ubuntu 10.04下C连接MySQL数据库
http://www.linuxidc.com/Linux/2012-05/61314.htm
2.Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
http://www.ha97.com/5359.html
3.C API–Linux上C语言读取MySQL数据库内容
http://www.ahlinux.com/c/9619.html