龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

在VC++中建立自定义数据库类(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
---- 三、在自定义的类中加入所需的函数和变量 ---- 手工加入函数包括两项工作,首先在头文件中加入函数的声明,然后,在实现文件中加入函数的具体实

---- 三、在自定义的类中加入所需的函数和变量

---- 手工加入函数包括两项工作,首先在头文件中加入函数的声明,然后,在实现文件中加入函数的具体实现,声明与实现一定要统一;

---- 使用向导加入函数和变量:

---- 1、在Workspace窗口选择ClassView选项卡;

---- 2、在树型类结构图的要添加函数和变量的类上单击鼠标右键,如果加入成员函数则单击Add Member Function,加入虚函数单击Add Virtual Function,加入成员变量单击 Add Member Variable;

---- 3、出现对话框后,填写成员函数或变量的名称、类型,系统会自动添加函数的声明与实现;

---- 4、添加函数的具体操作,可以通过编辑代码进一步填写;

---- 这些操作将会在Workspace窗口的ClassView选项中立即体现出来,并且,单击ClassView中的相应函数就可进入该函数的实现部分,进行进一步编写代码,如果做不到这一点,说明添加成员函数的操作有误。

---- 下面以本应用程序为例,给出具体的表结构和几个主要函数的实现,读者可以根据自己的实际情况设计函数。

---- 本应用程序中的一个典型表的结构是:

序号 正题内容 难度系数 分值 答案 备注整型 字符型 长整型 双精度 字符型 字符型


---- 打开数据库的函数实现如下:
if (!loc_pDataBase->IsOpen()) loc_pDataBase->Open( NULL, FALSE,
FALSE, SQL_DATABASE);


---- 该函数中用到了CdaoDatabase类的两个函数IsOpen()和Open(NULL, FALSE, FALSE, SQL_DATABASE),因为已经声明了该类的指针对象loc_pDataBase,所以可以直接调用CdaoDatabase类的函数。其中,Open()函数中的最后一个参数SQL_DATABASE在前面已经介绍过,通过他打开相关的数据库。
---- 由于程序中打开表后,不仅要返回所有的记录集,还用到返回满足一定条件的记录集,因此打开表的函数除了带入表名外还有一个参数难度系数,lNDXS=0时,选择表中全部数据, lNDXS=1~n时,表示选择难度系数=1~n的记录。

bool CDataBaseOperate::OpenTable (CString strTableName,long lNDXS) { CString strFieldNumber; loc_pTable=new CdaoTableDef (loc_pDataBase); if (!loc_pTable->IsOpen()) loc_pTable->Open(strTableName); //打开指定的表名 strFieldNumber.Format("%d",loc_pTable- > GetFieldCount()); //得到字段数 CString Sqlstr,Sqlstr1,Sqlstr2; loc_pQueryDef=new CDaoQueryDef(loc_pDataBase); //得到查询集和记录集 if (lNDXS==0) { Sqlstr=_T("select * FROM "+strTableName); } else { Sqlstr1="SELECT * FROM "+strTableName ; Sqlstr2.Format("WHERE 难度系数= %d",lNDXS); Sqlstr=_T(Sqlstr1+Sqlstr2); } loc_pQueryDef->Create(NULL,Sqlstr); loc_pRecordset.Open(loc_pQueryDef); m_nRecordNumber=0; while(!loc_pRecordset.IsEOF()) { m_nRecordNumber++; loc_pRecordset.MoveNext( ); } return TRUE; }


---- 为了维护数据库的安全,表用过后应该关闭,关闭表的同时,要释放在打开表的操作时初始化的对象指针,例如:delete loc_pQueryDef。同样要注意,在构造函数中初始化的对象指针,在析构函数中一定要释放。对象指针的初始化和释放是成对出现的。
loc_pDataBase=new CDaoDatabase; //在构造函数中初始化对象指针。 delete loc_pDataBase; //在析构函数中释放该对象指针。


---- 四、CdataBaseOperate类的应用
---- 1、使用VC++的向导生成一个应用程序,可以根据需要选择基于对话框或是基于单、多文档,选择单文档或多文档时不要选择数据库支持。

---- 2、在应用程序的主头文件中加入#include "DataBaseOperate.h",并且还要声明一个CdataBaseOperate类的对象,public: CDataBaseOperate m_CDataBaseOperate;

---- 3、有了指向CdataBaseOperate类的对象后,刚刚在CdataBaseOperate类中编制的函数都可以通过
"m_CdataBaseOperate .函数名"来调用。

小结:

---- 本文是VC++6.0下的CdataBaseOperate类建立与应用的一个初步探讨,CdataBaseOperate类所实现的功能是很强大的。除了介绍的CdataBaseOperate类的几个基本而又常用的函数之外,CdataBaseOperate还有很多用于其他方面的功能函数,在此不一一介绍。CdataBaseOperate类的函数,实现了数据库内容的显示、修改、添加、删除等功能,基本上满足了数据库操作人员的需要。除了这些,编程人员还可以根据程序的需要定义自己的特有的函数。

---- 本文所提供的程序均在VC++ 6.0中编译通过。

精彩图集

赞助商链接