连接函数实现如下:
BOOL CDatabase::ConnectDB(Database_Param *p)
{
if(!mysql_real_connect(&mysql,p->host,
p->user,p->password,p->db,p->port,
p->unix_socket,p->client_flag))
{
OutErrors(); // 输出错误信息
return false;
}
return true;
}
第三步 对数据库进行加锁。即调用
LockTable(char* TableName,char* PRIORITY),对相应的表
TableName 完成相应属性 PRIORITY
的加锁,使程序兼容多线程功能。 加锁函数实现如下:
BOOL CDatabase::LockTable(char* TableName,char* PRIORITY)
{
char str[50];
sprintf(str,"LOCK TABLES %s %s",TableName,PRIORITY);
if(mysql_query(&mysql,str))
return false;
return true;
}
第四步 完成数据库操作。即根据需要调用
UpdateRecord(Data_Param
*para)、SelectRecord(Data_Param *para)、InsertRecord(Data_Param
*para)、DelRecord(Data_Param *para)等操作。其中的结构体 Data_Param 中存放数据库操作参数。上
述两个结构体的定义在
global.h
中。
InsertRecord 函数实现如下,其它实现方法相似:
BOOL CDatabase::InsertRecord(Data_Param *para)
{
char str[80];
sprintf(str,"insert into %s values(%s)",para->tab_name,para->insert_val);
if(mysql_query(&mysql,str))
return false;
return true;
}
第五步 解锁数据库。即调用
UnLockTable()
,完成对上述被加锁的表的解锁。 解锁函数实现如下:
BOOL CDatabase::UnLockTable()
{
if(mysql_query(&mysql,"UNLOCK TABLES"))
return false;
return true;
}
第六步 关闭数据库连接。即调用析构函数
~CDatabase(),关闭数据库,并自动释放初始化时定义的
CDatabase
类对象。 析构函数如下:
CDatabase::~CDatabase()
{
if(query)
mysql_free_result(query);
mysql_close(&mysql);
}
注意:在编译程序时,必须加入
MySQL 的库文件 libmySQL.lib。
4 MySQL 性能测试
4.1 ODBC API
通过索引读取
200 万行:528 秒