C语言 Mysql API 的调用(二)mysql_fetch_row( )

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_25908839/article/details/102753510

目录

一、思路

二、调用函数

三、例子

一、思路

要操作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 | [email protected] | 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 = [email protected]	
Account = turf	
Code = 123	
AdminId = 1

结果跟 adminInfo 表的内容一模一样。

猜你喜欢

转载自blog.csdn.net/qq_25908839/article/details/102753510