在使用C/C++的API来连接MySQL数据库时需要事先安装:
mysql-server MySQL 服务器端程序
mysql-client MySQL 客户端程序
mysql-devel
MySQL
所需的库和包含文件
假设在本机中存在一个名为 test的数据库,用户名root,密码 123456,在里面有一个username表,定义如下:
create table username(id int not null primary key, username varchar(32) not null);
已在username表中存放了一些数据。使用C语言编程读出username表中所有数据并输出。
源代码如下:
#include<mysql/mysql.h>
#include<stdio.h>
int main()
{
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query = "select * from username";
int t, r;
mysql_init(mysql);
if(!mysql_real_connect(mysql, "localhost", "root", "123456", "test", 0, NULL, 0))
{
printf("Error connecting to database: %s\n", mysql_error(mysql));
}
else
{
printf("Connected....\n");
}
t = mysql_query(mysql, query);
if(t)
{
printf("Error making query: %s\n", mysql_error(mysql));
}
else
{
printf("Query made...\n");
res = mysql_use_result(mysql);
if(res)
{
for(r=0; r<=mysql_field_count(mysql); r++)
{
row = mysql_fetch_row(res);
if(row<0) break;
for(t=0; t<mysql_num_fields(res); t++)
printf("%s", row[t]);
printf("\n");
}
}
mysql_free_result(res);
}
mysql_close(mysql);
return 0;
}
#include<stdio.h>
int main()
{
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query = "select * from username";
int t, r;
mysql_init(mysql);
if(!mysql_real_connect(mysql, "localhost", "root", "123456", "test", 0, NULL, 0))
{
printf("Error connecting to database: %s\n", mysql_error(mysql));
}
else
{
printf("Connected....\n");
}
t = mysql_query(mysql, query);
if(t)
{
printf("Error making query: %s\n", mysql_error(mysql));
}
else
{
printf("Query made...\n");
res = mysql_use_result(mysql);
if(res)
{
for(r=0; r<=mysql_field_count(mysql); r++)
{
row = mysql_fetch_row(res);
if(row<0) break;
for(t=0; t<mysql_num_fields(res); t++)
printf("%s", row[t]);
printf("\n");
}
}
mysql_free_result(res);
}
mysql_close(mysql);
return 0;
}
编译命令:
gcc c_mysql.c -L /usr/lib/mysql/ -lmysqlclient -o c_mysql
运行结果:
[root@localhost sql]# ./c_mysql
Connected....
Query made...
1xiaoming
2xiaoer
3zhangsan
注意:
MySQL的库文件在mysqlclient。因此在编译MySQL程序的时候有必要加上 -lmysqlclient编译选项。如果提示没有找到mysql.h,产生这个错误的原因是没有mysql.h文件,他在mysql-devel包中,需要安装这个包。
转载于:https://blog.51cto.com/ohyeahbbs/716509