(b)には、mysql_fetch_row()C言語のMySQL APIを呼び出します

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/qq_25908839/article/details/102753510

ディレクトリ

まず、アイデア

第二に、関数を呼び出します

第三に、例

 

まず、アイデア

)その後、mysqlデータベースは、最初のmysql_fetch_field(でフィールドを取得するには、フィールドのハンドル、mysql_num_fieldsによって()統計表にデータベースが確立された接続し、にmysql_store_result(でテーブルを選択)選出のテーブルの内容必要があり、動作させるために、そして最終的には、mysql_fetch_rowで()は、各ラインと印刷の内容を取得します。

第二に、関数を呼び出します

「呼び出しC言語のMySQL APIの(a)は、」他の関数呼び出しを参照してください  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()は2つの実行へのポインタを返す場合、次のアドレスが存在しない場合、この関数の実装は、次の文字配列、文字列の配列のアドレスが返された後に、文字列の配列へのポインタとして理解することができる、戻り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