参考http://andrew913.iteye.com/blog/433280 http://a1liujin.blog.51cto.com/5519498/1686202
一个例子程序
#include"/usr/include/mysql/mysql.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<mysql/mysql.h>
int main(int argc , char *argv[])
{
MYSQL my_connection;
MYSQL_RES *result;
MYSQL_ROW sql_row;
MYSQL_FIELD *fd;
int res;
char sql_insert[200]="select count from workload where id = 1";
char column[200][200];
mysql_init(&my_connection);
if(mysql_real_connect(&my_connection,"localhost","root","password","database",0,NULL,0))
{
printf("Connection success\n");
res=mysql_query(&my_connection,sql_insert);
if(!res)
{
result=mysql_store_result(&my_connection);//保存查询到的数据到result
if(result)
{
int i,j;
printf("the result number is %lu\n ",(unsigned long)mysql_num_rows(result));
for(i=0;fd=mysql_fetch_field(result);i++)//获取列名
{
bzero(column[i],sizeof(column[i]));
strcpy(column[i],fd->name);
}
j=mysql_num_fields(result);
for(i=0;i<j;i++)
{
printf("%s\t",column[i]);
}
while(sql_row=mysql_fetch_row(result))//按行获取结果,每次一行,每行的结果为sql_row[][]一个二维数组
{
for(i=0;i<j;i++)
{
printf("%s\t",sql_row[i]);
//for(int a=0; a < sizeof(sql_row[i]); a++)
//{
// printf("%d\n",sql_row[i][a]);
//}
}
printf("\n");
}
//sql_row=mysql_fetch_row(result);
//printf("%02x\t",sql_row[1]);
}
}
else
{
perror("select");
}
}
else
{
perror("connect:error");
}
mysql_free_result(result);//释放结果资源
mysql_close(&my_connection);//断开连接
return 0;
}
//gcc test.cpp -o ttt -lmysqlclient -I/usr/include/mysql/ -L/usr/lib64/mysql
1. 编译的时候要需要加上 -lmysqlclient -I/usr/include/mysql/ -L/usr/lib64/mysql
2. mysql_fetch_row这个函数,就是读去查询结果的一行,返回的sql_row是char **类型。