通过MySQL提供的C API访问MySQL数据库



在VISUAL C++中访问MySQL 数据库的方式有很多种,可以直接采用ODBC 的方式,也可以采用ADO 访问(此两种方法均需要安装MySQL ODBC驱动)。但是除此之外,MySQL 还提供了一套C API,使得我们可以更加灵活的操作MySQL 中的数据,而且较其他访问方式在速度上的优势非常明显。需要注意的是,在安装MySQL 时必须选择Custom安装方式:
在之后出现的安装步骤中,应当选中在默认情况下未被选中的Developer Components:
这样安装程序才会将必要的头文件和库文件拷贝到安装目录中。
在VISUAL C++中应当将已安装的头文件文件夹添加到Tools->Options->Directories->Include files中:
同时,也应当将库文件文件夹添加到Tools->Options->Directories->Libraryfiles中:



一般来讲,通过C API访问MySQL 要经过6个步骤:

1. 通过调用mysql_library_init(),初始化MySQL库。
2. 通过调用mysql_init()初始化连接处理程序。
3. 通过调用mysql_real_connect()连接到服务器。
4. 通过调用mysql_query()或mysql_real_query()发出SQL 语句并通过调用
mysql_store_result()等处理其结果。
5. 通过调用mysql_close(),关闭与MySQL 服务器的连接。
6. 通过调用mysql_library_end(),结束MySQL 库的使用。


下面对上述几个函数进行简单的介绍:


一.mysql_library_init()与mysql_library_end()

在头文件mysql.h 中可以发现mysql_library_init 与mysql_library_end 都是
宏,其定义为:
#define mysql_library_init mysql_server_init
#define mysql_library_end mysql_server_end
函数mysql_server_init()声明如下:
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
其作用是启动服务器,并初始化服务器使用的任何子系统(mysys、InnoDB等),参数argc 与argv 与main()的参数类似,groups 代表选项文件,以NULL结尾,在示例程序中,分别为这三个参数赋值为0,NULL,NULL。如果此函数正执行,返回0,出现错误,则返回1。
函数mysql_server_end()声明如下:
void STDCALL mysql_server_end(void);
其作用是关闭服务器。应在其他所有mysql 函数调用完毕后调用。
二.mysql_init()与mysql_close()
mysql_init()的声明为
MYSQL * STDCALL mysql_init(MYSQL *mysql);
其作用是分配或初始化与mysql_real_connect()相适应的MYSQL对象
mysql_close()的声明为
void STDCALL mysql_close(MYSQL *sock);
其作用是关闭已打开的连接
三.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);
共有8 个参数,依次表示 MYSQL 结构的地址、主机名或IP 地址、用户的
MySQL 登录ID、用户的密码 、要打开的数据库、TCP/IP 连接的端口号、套接
字或命名管道、允许特定功能的标志的组合。
在示例程序中如下传入参数:
mysql_real_connect(&mydata,"127.0.0.1","root","123321","test",MYSQL_PORT
,NULL,0)
表示连接本机MYSQL 服务器以root 用户ID 和密码123321 连接数据库
test。如果函数执行成功,返回MYSQL*连接句柄。如果失败,返回NULL。
四.查询与处理返回数据集的多个函数
mysql_query()与mysql_real_query()都用来执行查询操作,所不同的是
mysql_query()函数的参数是NULL 结尾的字符串,而mysql_real_query()的参数
是字符串及其长度。
mysql_store_result()与mysql_use_result() 用来得到查询的结果,所不同的是
mysql_store_result()一次性将结果全部读到客户端,而mysql_use_result()则在需
要时到服务器端查询。
mysql_num_rows()与mysql_num_fields()分别用于得到记录集的函数和列
数。
mysql_fetch_field_direct()与mysql_fetch_row()分别用于得到相应的字段名和
行。
利用C API 访问MYSQL 数据库十分方便,在对SQL 有一定基础后只需对
MySQL 所提供的相关函数熟悉即可。
本文附带示例程序一个,名为MySQLTest。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值