Mysql—C语言API接口


了解api接口,自己实现mysql客户端,在代码中访问数据库操作数据。

一、mysql-arp访问数据的操作流程

1. 初始化mysql操作句柄;

2. 连接mysql服务器;

3. 设置mysql客户端字符集(保持与服务器一致);

4. 选择要操作的数据库;

5. 定义sql语句,并且执行语句;

(就是将sql发送给服务器,服务器进行解析完成操作);

  • 如果是新增,修改,删除操作语句执行成功意味着本次操作完成,
  • 但是如果是查询,语句执行成功只是第一步。

6. 将查询结果保存到本地;

7. 获取结果中的条数和列数;

8. 根据条数和列数遍历结果集;

9. 释放保存在本地的结果集;

10. 关闭mysql句柄,释放资源;

二、接口认识

1. 初始化mysql句柄

MYSQL *mysql_init(MYSQL *mysql);
  mysql:传入一个句柄的地址进行初始化,
         如果传入NULL,则内部申请空间进行初始化并返回申请的句柄的首地址。
  返回值:失败返回NULL

2. 连接mysql服务器

MYSQL *mysql_real_connect(MYSQL *mysql, char *host, char *user, char *pass, 
                          char *db, int port, char *socket, int clientflag);
  mysql:mysql_init返回的句柄;
  host:mysql服务器地址;
  user:用户名;
  db:默认要操作的库名称;
  port:端口,0表示默认使用3306端口
  socket:套接字或者管道文件,通常置NULL;
  clientflag:客户端标志,通常置0;
  返回值:成功返回句柄首地址,失败返回NULL

3. 设置当前客户端的字符集

int mysql_set_character_set(MYSQL *mysql, const char *csname);	
  mysql:初始化完成的句柄;
  csname:字符集名称,通常是uft8;
  返回值:成功返回0,失败返回非0

4. 选择操作的数据库

int mysql_select_db(MYSQL *mysql, const char *db);
  mysql:初始化完成的句柄;
  db:要操作的数据库名称;
  返回值:成功返回0,失败返回非0

5. 执行sql语句

int mysql_query(MYSQL *mysql, const char *sql);
  mysql:初始化完成的句柄;
  sql:要执行的sql语句;
  返回值:成功返回0,失败返回非0

5.1 获取mysql-api接口运行失败的原因:

char * mysql_error(MYSQL *mysql)

6. 保存查询结果到本地

MYSQL_RES *mysql_store_result(MYSQL *mysql)

7. 获取结果集中的行数与列数

uint64_t mysql_num_rows(MYSQL_RES *res);
  res:保存到本地的结果集地址;
  返回值:结果集中数据的**条数**
unsigned int mysql_num_fields(MYSQL_RES *res);
  res:保存到本地的结果集地址;
  返回值:结果集中每一条数据的**列数**

8. 遍历结果集

MYSQL_ROW mysql_fetch_row(MYSQL_RES *res); 
  res:保存到本地的结果集地址;

遍历结果集,会在res中做标记,保存读写位置,每获取一条就会向后偏移;

MYSQL_ROW这是一个char *res[xxxx] - - 每个元素都是一个字段的值。

mysql结果不管是什么类型,保存过来就是一个字符串;

9. 释放结果集

int mysql_free_result(MYSQL_RES *res);

10. 关闭数据库客户端连接,销毁句柄:

int mysql_close(MYSQL *mysql);
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值