如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第13章数据库应用程序的开发13.1有关数据库的基础知识13.2ODBC介绍和引用13.2.1ODBC简介ODBC数据源控制台就是Windows系统管理数据源的控制台,所有的数据库驱动,以及数据源登记都要在此发布,并向系统发出请求。通过使用ODBCAPI和MFCODBC类,可以访问任何数据资源。只要应用程序的用户的终端机器上有ODBC的驱动,都可以访问任何地方的数据源。ODBC是一种接口,它是通过相应的各个数据库的ODBC驱动来访问各种数据库中的数据。使用ODBC,能够使应用程序独立于数据库的硬件环境,ODBC提供的API函数独立于数据库管理系统。ODBC是Microsoft的Windows系统下的数据库服务的一部分。它是由下面几个部分构成的:ODBCAPI:包含在一个动态库中的函数集合、一个错误代码的集合、一个标准的SQL语句集合,用来调用DBMS中的数据。ODBCDriverManager:一个动态库文件(ODBC32.DLL)来加载ODBC驱动,这个DLL对你的应用程序是透明的。ODBCdatabasedrivers:由一个或是多个DLL构成,其中含有ODBCAPI,这些DLL由其拥有者DBMS调用。ODBCCursorLibrary:这也是一个动态连接库文件。ODBCAdministrator:这是一个ODBC控制台,用来管理不同的数据源。13.2.2MFC对ODBC的封装13.2.3如何访问数据库13.2.4在数据库应用程序中常用的几个类【例13-1】创建一个数据库应用程序,可以显示Access数据库表中的记录。步骤:选择已创建好的数据库My_Access_db.mdb表单用ClassWizard给相应的EditBox连接变量,注意,在AddMemberVariable对话框中的下拉组合框中已经有了相应表中的字段,只要选中相应的字段就可以了2CRecordset类3CDatabase类4RFX下面代码就是【例13-1】工程文件中AppWizard自动加入的RFX代码,见粗斜体部分:voidCODBCSet::DoFieldExchange(CFieldExchange*pFX){//{{AFX_FIELD_MAP(CODBCSet)pFX->SetFieldType(CFieldExchange::outputColumn);RFX_Long(pFX,_T("[书籍ID]"),m___ID);RFX_Text(pFX,_T("[作者]"),m_column1);RFX_Text(pFX,_T("[出版社]"),m_column2);RFX_Text(pFX,_T("[价格]"),m_column3);//}}AFX_FIELD_MAP}函数DoFieldExchange是RFX机制的中枢,任何时候应用框架需要从数据源到数据库或是从数据库到数据源,都要调用DoFieldExchange函数。下面是CRecordset派生类的头文件,其中关于RFX机制的部分已经用粗斜体显示:classCODBCSet:publicCRecordset{…//Field/ParamData//{{AFX_FIELD(CODBCSet,CRecordset)longm___ID;CStringm_column1;CStringm_column2;CStringm_column3;//}}AFX_FIELD//Overrides//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CODBCSet)public:……virtualvoidDoFieldExchange(CFieldExchange*pFX);//RFXsupport//}}AFX_VIRTUAL…};5CDBException【例13-2】在【例13-1】的基础上增加“删除一个记录”、“更新记录”和“清除域”三个菜单项,并实现相应的操作。2重载OnMove函数BOOLCODBCView::OnMove(UINTnIDMoveCommand){switch(nIDMoveCommand){caseID_RECORD_PREV:m_pSet->MovePrev();if(!m_pSet->IsBOF())break;//如果移到数据库的开始,自动执行MoveFirst函数caseID_RECORD_FIRST:m_pSet->MoveFirst();break;caseID_RECORD_NEXT:m_pSet->MoveNext();if(!m_pSet->IsEOF())break;