软件开发中银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站经常要拜访数据库,存取数据,之前曾经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细解说怎样运用Mysql 的C言语API进行数据库编程。

        API,全称Application Programming Interfaces,即运用程序编程接口,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站可以调用这些接口,执行API函数提供的功能。

       Mysql C言语API就是用C言语编写的Mysql编程接口,运用这些接口函数可以实现对Mysql数据库的查询等操作。
    
       Mysql的安装
   
       要进行Mysql编程起首要正正在充当Mysql效劳器的电脑和本机上都安装Mysql,效劳器上的Mysql用来结合查询,本机上的Mysql作为开发之用,当然本机也可以兼顾效劳器和开发之用。下载Mysql可以到。鸡啄米安装的是“Windows (x86, 64-bit), MSI Installer”版本。

       正正在Mysql安装历程中,安装选项一定要选上Development Components下的Client C API library(shared),这样才会将Mysql API的头文件和动态库安装到电脑中。

        安装完成后,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站编程要用的就是include目录下的头文件和lib目录下的库文件。

       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、起首银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站要包含mysql的头文件,并链接mysql动态库。即添加以下语句:

C++代码
  1. #include <WinSock2.h>      // 进行网络编程需要winsock2.h   
  2. #include <mysql.h>   
  3. #pragma comment(lib, "libmysql.lib")  

       2、创建MYSQL变量。如:

        MYSQL mysql;

       3、初始化MYSQL变量。

        mysql_init(&mysql);

       4、调用mysql_real_connect函数结合Mysql数据库。mysql_real_connect函数的原型如下:

C++代码
  1. 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--银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站用户名;passwd--银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站密码;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变量获取查询结果数据。

        两个函数的原型分别为:

       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,不然未读取的行会正正在下一次查询时作为结果的一限制返回,故经常银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站运用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);

       Mysql C API编程实例

       鸡啄米这里给大家一个简单的Mysql API编程实例。运用VS2010编写。拜访的数据库为安装Mysql后默认创建的名称为“mysql”的数据库,查询其“user”表的数据,步骤如下:

       1、创建一个Win32 Console Application(Win32控制台程序)的空工程(创建空工程需要正正在向导的Application Settings一步中,勾选Empty project),名称就取为mysql。

        2、正正在Solution Explorer窗口的工程名“mysql”上点右键,选择“Properties”,弹出工程的属性页,然后正正在左侧子窗口中,选择Configuration Properties->VC++ Directories,右侧子窗口中会显现一些设置项列表,然后正正在Include Directories项中添加Mysql的Include目录,正正在Library Directories项中添加Mysql的lib目录。

 Mysql C言语API编程初学解说之详细篇

       3、新建一个cpp文件,取名mysql.cpp。

       4、正正在mysql.cpp文件中包含mysql头文件并链接mysql动态库。

C++代码
  1. #include <WinSock2.h>   
  2. #include <mysql.h>   
  3. #pragma comment(lib, "libmysql.lib")  

        这里要帮理,由于mysql用到了网络结合的接口函数,以是需要正正在前面包含WinSock2.h文件。

        同时本例中运用了输出流cout,以是还要包含输入输出流头文件:

C++代码
  1. #include <iostream>   
  2. using namespace std;  

       5、创建main函数,并修改函数体如下:

C++代码
  1. int main()  
  2. {  
  3.     MYSQL mysql;  
  4.     MYSQL_RES *res;  
  5.     MYSQL_ROW row;  
  6.   
  7.     // 初始化MYSQL变量  
  8.     mysql_init(&mysql);  
  9.     // 结合Mysql效劳器,本例运用本机作为效劳器。拜访的数据库名称为"msyql",参数中的user为你的银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站用户名,***为银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站密码,需要依据你的执行用户进行设置  
  10.     if (!mysql_real_connect(&mysql, "127.0.0.1""user""123""mysql", 3306, 0, 0))  
  11.     {  
  12.         cout << "mysql_real_connect failure!" << endl;  
  13.         return 0;  
  14.     }  
  15.     // 查询mysql数据库中的user表  
  16.     if (mysql_real_query(&mysql, "select * from user", (unsigned long)strlen("select * from user")))  
  17.     {  
  18.         cout << "mysql_real_query failure!" << endl;  
  19.         return 0;  
  20.     }  
  21.     // 存储结果集  
  22.     res = mysql_store_result(&mysql);  
  23.     if (NULL == res)  
  24.     {  
  25.         cout << "mysql_store_result failure!" << endl;  
  26.         return 0;  
  27.     }  
  28.     // 浸复读取行,并输出第一个字段的值,直到row为NULL  
  29.     while (row = mysql_fetch_row(res))  
  30.     {  
  31.         cout << row[0] << endl;  
  32.     }  
  33.     // 开释结果集  
  34.     mysql_free_result(res);  
  35.     // 封合Mysql结合  
  36.     mysql_close(&mysql);  
  37.   
  38.     return 0;  
  39. }  

        6、将mysql安装目录中的libmysql.dll动态库文件拷贝到工程的当前目录,运行程序。

       如果你跟鸡啄米往往运用的是mysql的64位版本,此时程序会报错,有很众不行解析的符号,这是由于银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站的工程是32位的,应该改为64位,方法是,上面的工程属性页的右上角有个Configuration Manager按钮,点击它弹出Configuration Manager对话框,下面的列表中可以看到有银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站的工程,Platform列显现为“Win32”:

Mysql C言语API编程初学解说之详细篇

        这里需要点击右侧的箭头下拉,选择New弹出New Project Platform对话框,New platform选择x64创建新Platform:

Mysql C言语API编程初学解说之详细篇

        上述的Platform列选择x64就可以了。再次运行程序,你会发现它果真不报错了。

       本文就到这里了,到此大家应该对Mysql C API编程有了根蒂的了解了,正正在执行开发中可以不断深化研究。

除非特别注明,鸡啄米文章均为原创
转载请标明本文地址:http://www.sygjbus.cn/software/279.html
2012年12月21日
作家:鸡啄米 分类:软件开发 浏览: 评论:7