Linux
一、准备
yum install -y mysql.x86_64 mysql-devel.x86_64
二、代码
2.1 说明
mysql_num_rows()获取查询结果的行数。
如果采用了mysql_store_result()获取结果集,可以立刻调用mysql_num_rows()。
如果采用了mysql_use_result()获取结果集,调用mysql_num_rows()返回不正确的结果,需要在检索完所有的结果集后再调用。
2.2 代码
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
int main(int argc, char* argv[])
{
//
MYSQL* conn = mysql_init(NULL);
//
if (!mysql_real_connect(conn, "localhost", "root", "love", "inerdns", 0, NULL, 0))
{
printf("mysql_real_connect() error: %s\n", mysql_error(conn));
return 1;
}
//
if (mysql_query(conn, "select * from probe_result"))
{
printf("mysql_query() error: %s\n", mysql_error(conn));
return 2;
}
//
MYSQL_RES* res = mysql_use_result(conn);
//MYSQL_RES* res = mysql_store_result(conn);
//
unsigned long num_rows = mysql_num_rows(res);
unsigned int num_fields = mysql_num_fields(res);
printf("num_rows:%d, num_fields:%d\n", num_rows, num_fields);
//
MYSQL_ROW row;
while ( (row = mysql_fetch_row(res)) != NULL)
{
int i;
for (i=0; i<num_fields; i++)
printf("%s ", row[i]);
printf("\n");
}
//
num_rows = mysql_num_rows(res);
printf("num_rows:%d, num_fields:%d\n", num_rows, num_fields);
//
mysql_free_result(res);
//
mysql_close(conn);
return 0;
}
三、编译
gcc $(mysql_config --cflags) test.c -o test $(mysql_config --libs)
四、运行结果
Windows下
一、准备
mysql: ZIP下载、安装、启动、使用、卸载:http://blog.csdn.net/guowenyan001/article/details/9665803
二、代码
2.1 概述
上面Linux的代码,在Windows下完全可以运行,需要修改以下几点:
1. 包含mysql的include和lib路径。
2. #pragma comment(lib, "libmysql.lib")。
3. 包含文件#include <winsock.h>。
4. 设置libmysql.dll(3种方法:放到VS的Debug目录下,或放到C:\Windows\System32,或设置环境变量Path并重启VS)。
mysql_fetch_field_direct() 将给定结果集某列的字段编号。
2.2 代码
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#include <mysql.h>
#pragma comment(lib, "libmysql.lib")
int main(int argc, char* argv[])
{
//
MYSQL* conn = mysql_init(NULL);
//
if (!mysql_real_connect(conn, "192.168.175.130", "root", "love", "inerdns", 0, NULL, 0))
{
printf("mysql_real_connect() error: %s\n", mysql_error(conn));
return 1;
}
//
if (mysql_query(conn, "select * from probe_result"))
{
printf("mysql_query() error: %s\n", mysql_error(conn));
return 2;
}
//
MYSQL_RES* res = mysql_use_result(conn);
//MYSQL_RES* res = mysql_store_result(conn);
//
unsigned long num_rows = mysql_num_rows(res);
unsigned int num_fields = mysql_num_fields(res);
printf("num_rows:%d, num_fields:%d\n", num_rows, num_fields);
//
MYSQL_ROW row;
while ( (row = mysql_fetch_row(res)) != NULL)
{
int i;
for (i=0; i<num_fields; i++)
{
/only modify here//
MYSQL_FIELD *field;
field = mysql_fetch_field_direct(res, i);
printf("Field %d is %s\n", i, field->name);
//
}
printf("\n");
}
//
num_rows = mysql_num_rows(res);
printf("num_rows:%d, num_fields:%d\n", num_rows, num_fields);
//
mysql_free_result(res);
//
mysql_close(conn);
return 0;
}
三、运行结果
参考资料:
mysql使用C API连接数据库:http://no001.blog.51cto.com/1142339/340979