zoukankan      html  css  js  c++  java
  • 如何使用Mysql的C语言API进行数据库编程

      API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能。
      Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作。
      Mysql的安装
      要进行Mysql编程首先要在充当Mysql服务器的电脑和本机上都安装Mysql,服务器上的Mysql用来连接查询,本机上的Mysql作为开发之用,当然本机也可以兼顾服务器和开发之用。下载Mysql可以到http://www.mysql.com/downloads/mysql/。鸡啄米安装的是“Windows(x86,64-bit),MSI Installer”版本。
      在Mysql安装过程中,安装选项一定要选上Development Components下的Client C API library(shared),这样才会将Mysql API的头文件和动态库安装到电脑中。
      安装完成后,我们编程要用的就是include目录下的头文件和lib目录下的库文件。https://www.weixiu3721.com
      Mysql API数据结构
      Mysql API中用到了很多结构体等数据类型,下面就简单说说常用的几个数据结构的含义,至于它们的定义鸡啄米就不贴了,大家可以到Mysql提供的mysql.h头文件中查看。
      MYSQL
      连接数据库前,必须先创建MYSQL变量,此变量在很多Mysql API函数会用到。它包含了一些连接信息等数据。
      MYSQL_RES
      MYSQL_RES结构体中包含了查询结果集,也就是从数据库中查询到的数据。可以使用mysql_store_result或mysql_use_result函数获得。
      MYSQL_ROW
      MYSQL ROW的定义如下:
      typedef char**MYSQL_ROW;
      可见,它实际上是char**类型,指向一个字符串数组。可以通过mysql_fetch_row函数获得。
      MYSQL_FIELD
      MYSQL_FIELD中包含了字段名、字段类型和大小等信息。可以重复调用mysql_fetch_field函数获得所有字段的信息。
      Mysql C API编程步骤
      1、首先我们要包含mysql的头文件,并链接mysql动态库。即添加以下语句:
      #include<WinSock2.h>//进行网络编程需要winsock2.h
      #include<mysql.h>
      #pragma comment(lib,“libmysql.lib”)
      2、创建MYSQL变量。如:
      MYSQL mysql;
      3、初始化MYSQL变量。
      mysql_init(&mysql);
      4、调用mysql_real_connect函数连接Mysql数据库。mysql_real_connect函数的原型如下:
      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);
      参数说明:mysql--前面定义的MYSQL变量;host--MYSQL服务器的地址;user--登录用户名;passwd--登录密码;db--要连接的数据库;port--MYSQL服务器的TCP服务端口;unix_socket--unix连接方式,为NULL时表示不使用socket或管道机制;clientflag--Mysql运行为ODBC数据库的标记,一般取0。连接失败时该函数返回0。
      5、调用mysql_real_query函数进行数据库查询。mysql_real_query函数的原型如下:
      int STDCALL mysql_real_query(MYSQL*mysql,const char*q,unsigned long length);
      参数说明:mysql--前面定义的MYSQL变量;q--SQL查询语句;length--查询语句的长度。
      查询成功则该函数返回0。
      6、通过调用mysql_store_result或mysql_use_result函数返回的MYSQL_RES变量获取查询结果数据。
      两个函数的原型分别为:https://www.weixiu3721.com
      MYSQL_RES*STDCALL mysql_store_result(MYSQL*mysql);
      MYSQL_RES*STDCALL mysql_use_result(MYSQL*mysql);
      这两个函数分别代表了获取查询结果的两种方式。第一种,调用mysql_store_result函数将从Mysql服务器查询的所有数据都存储到客户端,然后读取;第二种,调用mysql_use_result初始化检索,以便于后面一行一行的读取结果集,而它本身并没有从服务器读取任何数据,这种方式较之第一种速度更快且所需内存更少,但它会绑定服务器,阻止其他线程更新任何表,而且必须重复执行mysql_fetch_row读取数据,直至返回NULL,否则未读取的行会在下一次查询时作为结果的一部分返回,故经常我们使用mysql_store_result。
      7、调用mysql_fetch_row函数读取结果集数据。
      上述两种方式最后都是重复调用mysql_fetch_row函数读取数据。mysql_fetch_row函数的原型如下:
      MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES*result);
      参数result就是mysql_store_result或mysql_use_result的返回值。
      该函数返回MYSQL_ROW型的变量,即字符串数组,假设为row,则row[i]为第i个字段的值。当到结果集尾部时,此函数返回NULL。
      8、结果集用完后,调用mysql_free_result函数释放结果集,以防内存泄露。mysql_free_result函数的原型如下:
      void STDCALL mysql_free_result(MYSQL_RES*result);
      9、不再查询Mysql数据库时,调用mysql_close函数关闭数据库连接。mysql_close函数的原型为:
      void STDCALL mysql_close(MYSQL*sock);

  • 相关阅读:
    不要对父母说的十句话
    25句世界上最經典的話
    奥巴马(Obama)获胜演讲全文[中英对照]+高清视频下载
    【心理测试】男人眼中女人哪里最性感?
    一张图看出你是用左脑还是右脑
    我是有原则的~~(笑话转贴)
    各行各业常用大用大谎言
    你知道我今天为啥要来上班吗?
    女性抽烟腰会变粗?
    心理学家揭秘人临死时的感受
  • 原文地址:https://www.cnblogs.com/zqw111/p/12929229.html
Copyright © 2011-2022 走看看