C语言 Mysql API 的调用(一)

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

目录

一、思路

二、调用函数

三、例子

一、思路

要操作mysql数据库的话首先要连接已经建立的database,然后选择table,通过 mysql_store_result( ) 把 table 的内容选出来放到句柄,通过 mysql_num_fields( ) 统计 table 的字段,最后通过 mysql_fetch_field( ) 打印出字段

二、调用的函数如下:

mysql_init()
mysql_real_connect()
mysql_error()
mysql_query()
mysql_store_result()
mysql_num_fields()
mysql_fetch_field()

详细声明在 /usr/include/mariadb/mysql.h

MYSQL * (STDCALL *mysql_init)(MYSQL *mysql);
MYSQL * (STDCALL *mysql_real_connect)(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long clientflag);
const char * (STDCALL *mysql_error)(MYSQL *mysql);
int (STDCALL *mysql_query)(MYSQL *mysql, const char *q);
MYSQL_RES * (STDCALL *mysql_store_result)(MYSQL *mysql);
unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);
MYSQL_FIELD * (STDCALL *mysql_fetch_field)(MYSQL_RES *result);

三、例子

如下为 adminInfo 的表

MariaDB [library]> desc adminInfo;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| Name     | varchar(40) | YES  |     | NULL    |       |
| Gender   | varchar(10) | YES  |     | NULL    |       |
| IdNumber | int(11)     | YES  |     | NULL    |       |
| Phone    | int(11)     | YES  |     | NULL    |       |
| Email    | varchar(40) | YES  |     | NULL    |       |
| Account  | varchar(40) | YES  |     | NULL    |       |
| Code     | varchar(40) | YES  |     | NULL    |       |
| AdminId  | int(1)      | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
#include <stdio.h>
#include <stdlib.h>
#include <mariadb/mysql.h>
#include <string.h>

int main(int argc, char** argv)
{
	MYSQL conn;
	MYSQL_RES res; 
	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]);
	}

	return 0;
}

运行结果如下:

$ gcc exam.c -lmysqlclient -L /usr/lib/arm-linux-gnueabihf/libmysqlclient.so
$ ./a.out 

8
Name
Gender
IdNumber
Phone
Email
Account
Code
AdminId

打印的结果跟 adminInfo 的字段一样

猜你喜欢

转载自blog.csdn.net/qq_25908839/article/details/102742697
今日推荐