视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL数据库接口的VC实现与应用(2)_MySQL
2020-11-09 17:43:41 责编:小采
文档

摘要:MySQL数据库作为一种网络数据库性能十分出色,但其在应用软件中使用较少。本文将主要探讨MySQL提供的两种数据库接口 ――(ODBC API和C API)在VC中的应用,并且形成一个类用以封装C API数据库接口的功能。

关键词:MySQL;数据库接口;ODBC API;C API

3 利用MySQL自带的C API函数实现数据库功能调用

  由于各个数据库之间的差异,它们所提供的数据库功能也就各有不同。这样,通过ODBC API就不可能完全拥有所有的数据库功能,因而影响了程序对数据库的控制功能,也就不能充分发挥数据库的能力。并且这种统一的接口还是以损失效能为前提的,这就使数据库操作时间延长。所以,为了解决以上问题,MySQL的制造商在提供ODBC驱动程序的基础上,还提供了各种编程环境下的API,其中包括C API。这些API函数很显然能尽可能地发挥数据库的能力,并减少数据库操作的延长时间,但却使程序的通用性受到严重影响。

  MySQL提供了一套C API函数,它由一组函数以及一组用于函数的数据类型组成,这些函数与MySQL 服务器进行通信并访问数据库,可以直接操控数据库,因而显著地提高了操控效能。

  C API数据类型包括:MYSQL(数据库连接句柄)、MYSQL_RES(查询返回结果集)、MYSQL_ROW(行集)、MYSQL_FIELD(字段信息)、MYSQL_FIELD_OFFSET(字段表的偏移量)、my_ulonglong(自定义的无符号整型数)等;C API提供的函数包括:mysql_close()、mysql_connect()、mysql_query()、mysql_store_result()、mysql_init()等,其中mysql_query()最为重要,能完成绝大部分的数据库操控。

下面将具体讨论数据库操作类CDatabase通过C API的实现以及在VC中的应用。

3.1 CDatabase类的实现

CDatabase类封装了MySQL数据库的功能,因此不具备通用性,只能在对MySQL的应用程序中使用。下面将根据C++要求及规范给出CDatabase类的具体结构以及相关简要介绍:

class CDatabase
{
public:
BOOL UnLockTable(); //解锁
BOOL LockTable(char* TableName,char* PRIORITY); //加锁
int Reload(); //重新登陆,非零时返回错误信息
char* GetState(); //服务器状态
char* GetServerInfo(); //服务器信息
int GetProtocolInfo(); //协议信息
char* GetHostInfo(); //主机信息
char * GetClientInfo(); //客户机信息
char* GetFieldName(int FieldNum); //字段名
BOOL IsEnd(); //是否最后
int DropDB(char *db); //删除数据库,非零时返回错误信息
void SeekData(int offset); //查找指定数据
int CreateDB(char *db); //创建数据库,非零时返回错误信息
void FreeRecord(); //释放结果集
unsigned int GetFieldNum(); //得到字段数
BOOL ConnectDB(Database_Param *p); //连接数据库
MYSQL_ROW GetRecord(); //得到结果(一个记录)
my_ulonglong GetRowNum(); //得到记录数
BOOL SelectDB(Data_Param *para); //选择数据库
BOOL UpdateRecord(Data_Param *para); //更新记录
BOOL SelectRecord(Data_Param *para); //选择记录
BOOL InsertRecord(Data_Param *para); //插入记录
BOOL DelRecord(Data_Param *para); //删除记录
BOOL SelectAll(Data_Param *para); //选择所有记录
char * OutErrors(); //输出错误信息
CDatabase(); //初始化数据库
virtual ~CDatabase(); //关闭数据库连接

private:
MYSQL mysql; //数据库连接句柄
MYSQL_RES *query; //结果集
MYSQL_ROW row; //记录集
MYSQL_FIELD *field; //字段信息(结构体)
BOOL FindSave(char *str); //查找并保存结果集
};

  通过CDatabase类中定义的这些功能函数,我们可以通过远程或本机完成对MySQL数据库的绝大部分操控,并且由于定义了解锁和加锁功能,使得应用程序能够多线程或多进程地访问数据库,大大提高了效能。以上函数的具体功能都是通过调用C API函数实现的。

下载本文
显示全文
专题