参考博客:https://bbs.youkuaiyun.com/topics/392144169?list=lz
参考博客:https://www.cnblogs.com/rupeng/archive/2012/10/06/2712841.html
两个mysql_query()之间需要释放result资源,否则会出现第一次执行成功,第二次执行失败的情况,执行成功返回0,执行失败放回1。
最简单的样例:
//conn_ptr声明:MYSQL *conn_ptr,此前需进行连接数据库操作
char query[50]="select * from stat_info;";
int res = mysql_query(conn_ptr, query);
printf("%d\n", res);
MYSQL_RES *result = mysql_store_result(conn_ptr);
mysql_free_result(result);
char query1[50]="select * from stat_info;";
res = mysql_query(conn_ptr, query);
printf("%d\n", res);
//两次输出都是0,说明两次执行都成功
一个完整样例:
//conn_ptr声明:MYSQL *conn_ptr,此前需进行连接数据库操作
/**********************一次查询过程开始**********************/
char query[50]="select * from stat_info;";
//进行查询
int res = mysql_query(conn_ptr, query);
printf("%d\n", res); //成功则输出0
//获取结果,并输出
MYSQL_RES *result = mysql_store_result(conn_ptr);
//获得结果列数
int col_num = mysql_field_count(conn_ptr);
//输出列名
MYSQL_FIELD *field = mysql_fetch_fields(result);
for (int i = 0; i < col_num; ++i)
printf("%-10s", field[i].name);
printf("\n");
//输出数据
if(mysql_num_rows(result))
{
MYSQL_ROW row = NULL;
while((row=mysql_fetch_row(result)))
{
for (int i = 0; i < col_num; ++i)
printf("%-10s", row[i]);
printf("\n");
}
}
//释放资源
mysql_free_result(result);
/**********************一次查询过程结束**********************/
可以再次进行其他数据库操作
//最后,释放连接,关闭数据库
mysql_close(&mysql);