版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
目录
一、思路
二、调用函数
三、例子
一、思路
要操作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;
}
运行结果如下:
扫描二维码关注公众号,回复:
7618259 查看本文章
$ gcc exam.c -lmysqlclient -L /usr/lib/arm-linux-gnueabihf/libmysqlclient.so
$ ./a.out
8
Name
Gender
IdNumber
Phone
Email
Account
Code
AdminId
打印的结果跟 adminInfo 的字段一样