免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
ディレクトリ
まず、アイデア
第二に、関数を呼び出します
第三に、例
まず、アイデア
)その後、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テーブルとの結果。