C语言 Mysql API 的调用(二)mysql_fetch_row( )
目录
一、思路
二、调用函数
三、例子
一、思路
要操作mysql数据库的话首先要连接已经建立的database,然后选择table,通过 mysql_store_result( ) 把 table 的内容选出来放到句柄,通过 mysql_num_fields( ) 统计 table 的字段,通过 mysql_fetch_field( ) 获得字段,最后通过 mysql_fetch_row( ) 获得每一行的内容并打印。
二、调用函数
其他调用的函数请看 《C语言 Mysql API 的调用(一)》 https://blog.csdn.net/qq_25908839/article/details/102742697
mysql_fetch_row()
MYSQL_ROW (STDCALL *mysql_fetch_row)(MYSQL_RES *result);
typedef char** MYSQL_ROW;
三、例子
说明:当 mysql_fetch_row( ) 执行后返回一个二级指针,也可以理解为指针字符串数组,此函数执行完后会返回下一个字符串数组的地址,如果下一个字符串数组地址不存在,则返回NULL。
如下就是 adminInfo 表
MariaDB [library]> select * from adminInfo;
+------+--------+----------+------------+---------------+---------+------+---------+
| Name | Gender | IdNumber | Phone | Email | Account | Code | AdminId |
+------+--------+----------+------------+---------------+---------+------+---------+
| turf | male | 4406 | 2147483647 | 242324@qq.com | turf | 123 | 1 |
+------+--------+----------+------------+---------------+---------+------+---------+
#include <stdio.h>
#include <stdlib.h>
#include <mariadb/mysql.h>
#include <string.h>
int main(int argc, char** argv)
{
MYSQL conn;
MYSQL_RES res;
MYSQL_ROW row; // typedef char** MYSQL_ROW
char tableName[30];
char query[1024];
unsigned short numFields;
char column[30][40];
//1.初始化
mysql_init(&conn);
//2.连接数据库
if(!mysql_real_connect(&conn, "localhost", "root", "123456", "library", 0, NULL, 0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&conn));
return -1;
}
//3.选择 table
strcpy(tableName, "adminInfo");
sprintf(query, "select * from %s", tableName);
mysql_query(&conn, query);
//4.取出 table 选择的内容
res = *mysql_store_result(&conn);
printf("%s\n", &res);
//5.统计 table 字段
numFields = mysql_num_fields(&res);
printf("%d\n", numFields);
//6.保存字段
for(int i = 0; i < numFields; ++i)
{
strcpy(column[i], mysql_fetch_field(&res)->name);
// printf("%s\n", column[i]);
}
//7.打印每一行的内容
while( (row = mysql_fetch_row(&res)) != NULL )
{
for(int j=0; j<numFields; j++)
{
printf("%s = %s\t\n", column[j], row[j]);
}
}
return 0;
}
输出结果如下:
$ gcc exam.c -g -lmysqlclient -L /usr/lib/arm-linux-gnueabihf/libmysqlclient.so
$ ./a.out
8
Name = turf
Gender = male
IdNumber = 4406
Phone = 2147483647
Email = 242324@qq.com
Account = turf
Code = 123
AdminId = 1
结果跟 adminInfo 表的内容一模一样。