Mysql C语言API编程入门讲解之详细篇

  次阅读 作者:智能小宝 来源:互联网 2016-01-26 10:28 我要评论(0)

软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用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目录下的库文件。

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变量获取查询结果数据。

两个函数的原型分别为:

MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);

MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...