#include <stdio.h>
#include <string>
#include <cstring>
#include <mysql/mysql.h>
using namespace std;
int main (){
MYSQL_ROW row;//用于提取每一行的结果
MYSQL_RES *res;//用于保存查询结果
MYSQL mysql;//生成一个mysql对象
mysql_init(&mysql);//初始化mysql数据库
if(mysql_real_connect(&mysql,"localhost","root","password","databaseName",0,NULL,0)){
//此方法是用于连接mysql数据库的,详细参数请参照:http:dev.mysql.com/doc/refman/5.1/zh/apis.html#mysql-real-connect
//看文档是很有用的,参数对应数据库对象,链接地址,localhost是本地地址,root是登陆msyql的用户名,password是密码,databaseName是数据库的名字,
//要保证数据库是存在的否则连接数据库失败
printf("OK\n");//成功,输出OK
}
else {
printf("ERORR\n");//失败输出ERORR
}
string sql = "select * from table";//用string是为了便于组合得到复杂的命令
int t = mysql_query(&mysql,sql.c_str());//由于接口是C语言的所以要转换为C字符串
if(mysql_errno(&mysql))puts("error");
//mysql_errno(&mysql)用于查看是否操作出错,返回0是没有错,否则返回的就是一个非零数,是一个错误码(对应的错误名称可以在文档查到)
//printf("%s",mysql_error(&mysql));可以直接打出错误名字 注意两个函数不一样啊。。。。
if(t)
{
printf("Error");
}else
{
res = mysql_store_result(&mysql);//mysql_store_result是一次性取出全部结果,mysql_use_result(&mysql)是一次取一个,与mysql_num_rows配合使用时只能用
//mysql_store_result否则结果永远是0
if(res)
for(int i = 0;i < mysql_num_rows(res);i ++)//mysql_num_rows获取结果行数
{
row = mysql_fetch_row(res);// 获取一行结果
if(row <= 0)break;
for(int r = 0;r < mysql_num_fields(res);r++)//mysql_num_fields获取结果列
{
if(row)
printf("%s\t",row[r]);//注意这里的row是一个指针,有可能是NULL,所以给string类型赋值时不能直接来要先判定下是不是NULL ,否则会段错误
}
puts("");
}
mysql_free_result(res); //用完后free掉,否则就内存泄露了
}
mysql_close(&mysql);
return 0;
}
下面是编译方法,要带链接库,一开始也是找不到的,你需要再装个东西,谷歌会找到,命令安装很快搞定。
g++ main -o main.c -L/usr/include/mysql -lmysqlclient
./main
用C语言调用mysql可以用mysql提供的API完成。在linux下调用很简单,只要装好mysql,头文件包含mysql/mysql.h文件,就可以调用了,在windows下没试过,不过听说也挺麻烦的。代码详解看注释。另外还有个mysql++,是针对C++的api,但是需要额外装东西。