background image

连接函数实现如下:

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 秒