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 表的内容一模一样。

 

  • 12
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值