【MySQL】MySQL Connect -- 详解

打印 上一主题 下一主题

主题 567|帖子 567|积分 1701

一、Connector / C 利用

要利用 C 语言连接 MySQL,需要利用 MySQL 官网提供的库,可以去官网进行下载:MySQL :: MySQL Community Downloads
我们利用 C 接口库来进行连接,要正确利用,还需要做一些预备工作:
      

  • 保证 MySQL 服务有效。
  • 在官网上下载合适本身平台的 MySQL Connect 库,以备后用。
    现在可以不需要像上面这样做了,因为我们在安装数据库时,系统就已经帮我们安装好了。
  

  

  
二、预备工作

1、验证库是否引入成功


编译并运行:

可以检察到当前 mysql 客户端的版本号。


三、MySQL 接口介绍

MySQL :: Developer Zone

可以自行选择:



1、初始化 mysql_init()

要利用库,就必须先进行初始化

   
  
2、链接数据库 mysql_real_connect

初始化完毕之后,必须先链接数据库,在进行后续操作(MySQL 网络部门是基于 TCP/IP的)。

第一个参数 MYSQL 是 C api 中一个非常重要的变量(mysql_init 的返回值),内里内存非常丰富,有 port,dbname,charset 等连接基本参数。它也包含了一个叫 st_mysql_methods 的结构体变量,该变量内里保存着很多函数指针,这些函数指针将会在数据库连接成功以后的各种数据操作中被调用。



创建好链接之后,获取英文没有题目,如果获取中文是乱码:需要设置链接的默认字符集为 utf-8,原始默认是 latin1。


3、下发 MySQL 下令 mysql_query


第二个参数是要执行的 sql 语句,如 select * from table。
   
  




   
  
4、获取执行结果 mysql_store_result

sql 执行完以后,如果是查询语句,固然还要读取数据。如果 update,insert 等语句,那么就看下操作成功与否即可。
来看看怎样获取查询结果: 如果 mysql_query 返回成功,那么就通过 mysql_store_result 这个函数来读取结果。原型如下:


该函数会调用 MYSQL 变量中的 st_mysql_methods 中的 read_rows 函数指针来获取查询的结果,同时该函数还会返回 MYSQL_RES 这样一个变量,这个变量主要用于保存查询的结果。同时该函数 malloc 了一片内存空间来存储查询过来的数据,以是肯定要记得 free(result),不然肯定会造成内存泄漏的。 执行完 mysql_store_result 后,其实数据都已经在 MYSQL_RES 变量中了,下面的 api 基本就是读取 MYSQL_RES 中的数据。

 MYSQL_RES 结构体可以行列为单元把查询得到的表结构数据组织好。
在我们利用 mysql_query 函数进行查询结果后,对应的数据就被存放进了 MYSQL 结构体相应的空间中,此时我们再调用 mysql_store_result 函数,把这部门数据转储进 MYSQL_RES 结构体里。


(1)获取结果行数 mysql_num_rows






(2)获取结果列数 mysql_num_fields





      
   (3)获取列名 mysql_fetch_fields

      

   MYSQL_FIELD 中存储列的所有属性信息:
   

   

   

   
   (4)获取结果内容 mysql_fetch_row

   

   

    它会返回一个 MYSQL_ROW 变量,MYSQL_ROW 其实就是 char**,就把它当作一个二维数组来用。

   注意:mysql 将所有的数据读取出来时,全都当作字符串。
  



5、释放结果集的空间 mysql_free_result




6、关闭 MySQL 链接 mysql_close




MySQL C api 还支持事件等常用操作,可以自行了解:
  1. my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
  2. my_bool STDCALL mysql_commit(MYSQL * mysql);
  3. my_bool STDCALL mysql_rollback(MYSQL * mysql);
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表