【ChinaBeta.Cn 网盟学院】
3.2 CDatabase类在VC中的应用
第一步 建立初始化MySQL对象,并且将其初始化。即定义CDatabase类对象,这样程序就会自动调用构造函数CDatabase(),完成初始化。
构造函数实现如下:
CDatabase::CDatabase ()
{
mysql_init (&mysql);
} |
完成初始化只需定义CDatabase类对象,即
第二步 连接服务器,并连接需要的数据库。即调用ConnectDB(Database_Param *p)函数,结构体Database_Param中存放数据库参数,包括主机名、用户名、密码、数据库名等。该函数如返回TRUE表示连接成功,否则表示失败。
连接函数实现如下:
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。 上一页 [1] [2] [3] [4] [5] 下一页
(责任编辑:hahack)
|