




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第14章数据库编程,14.1 ODBC的基本概念14.2 MFC的ODBC类14.3 ODBC数据源的数据库管理节目实例14.4 CRecordset类,14.5几个茄子有用的函数14.6附加节目功能14.7 DAO简介14.8摘要练习,MFC对数据库编程提供了强大支持。MFC提供了两组茄子类:开放式数据库连接(ODBC)和数据库访问对象(DAO),用于数据库访问。使用牙齿两个茄子强大的类可以轻松开发基于ODBC或DAO的数据库应用程序。open database connectivity(ODBC)是微软公司open services architecture (WOSA)的数据库组件,用于
2、建立一系列规范,这些API使用SQL执行大部分任务。ODBC本身也提供对SQL语言的支持,用户可以直接向ODBC发送SQL语句。14.1 ODBC的基本概念,基于ODBC的应用程序不依赖于任何数据库管理员系统、数据库管理系统(DBMS)进行数据库操作,也不直接与DBMS进行交易,所有数据库操作均由该DBMS的ODBC驱动程序(ODBC)完成。这意味着FoxPro、Access或Oracle数据库都可以使用ODBC API进行访问。可以看出,ODBC最大的优点是能够统一所有数据库处理。ODBC管理器(管理器)位于Windows控制面板(控制面板)的32位ODBC中,主要任务是管理已安装的ODBC
3、驱动程序和数据源。驱动程序管理员(车手管理员)是ODBC32 .包含在DLL中,对用户透明。其任务是管理ODBC驱动程序,是ODBC最重要的部件。ODBC驱动程序是提供ODBC和数据库之间接口的DLL。数据源包含数据库位置和数据库类型等信息,实际上是数据连接的抽象。在应用程序可以访问数据库之前,必须使用ODBC管理器注册数据源。管理员根据数据源提供的数据库位置、数据库类型、ODBC驱动程序等在ODBC和特定数据库之间建立连接。这样,如果应用程序向ODBC提供数据源名称,则可以在ODBC中建立相应的数据库连接。在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器交换数据库信息
4、。驱动程序管理器将对ODBC API的应用程序节目调用传递到正确的驱动程序(ODBC API),驱动程序()执行相应的任务,然后通过驱动程序管理器将结果返回到应用程序。要访问ODBC数据源,需要ODBC驱动程序支持。MFC的ODBC类封装了更复杂的ODBC API,提供了简单的调用接口,极大地简化了数据库应用程序的开发。程序员可以使用ODBC类执行大多数数据库任务,而无需知道ODBC API和SQL的具体详细信息。14.2 MFC的ODBC类,MFC的ODBC类主要包含(1) C数据库类。主要功能是建立与数据源的连接。(2)表示从数据源中选择的唱片集(记录集)的crecordset类。程序可以
5、选择数据源中的表作为记录集,也可以通过对表的查询来获取记录集,还可以将同一数据源中多个表的列合并到一个记录集中。使用牙齿类可以滚动、修改、添加和删除记录集中的记录。(3)提供直接连接到记录集的西餐视图的crecordview类,它使用对话框数据更换机制(DDX)在记录集和西餐视图中的控件之间传输数据。牙齿类支持记录的导航和更新,取消时将自动关闭关联的记录集。(4)支持唱片字段数据更换(DFX)的CFIELDEXCHANGE类,即记录集字段数据成员和相应数据库表中的字段之间的数据交换。牙齿类的工作方式与CDataExchange类的对话框数据更换功能类似。(5)表示ODBC类引发的异常的cdbe
6、xception类。,概括地说,数据库,负责数据源连接的CDatabaseCRecordset负责处理数据源中记录集的唱片。CRecordView负责接口,CFieldExchange负责与CRecordset交换数据源中的数据。使用AppWizard和ClassWizard,用户可以方便地设置数据库应用程序,但这并不意味着他们对MFC的ODBC类一无所知。要仔细阅读以下部分的内容,为学习后面的例子打下基础。要建立与数据源的连接,请首先配置CDatabase对象,然后调用CDatabase的Open成员函数。Open函数负责建立声明为: virtual BOOL open(lpct str l
7、psz DSN,bool bexclusive=false,bool bread only=false,lpctstr lpen)的连接Throw (cdbexception,cmemory exception);14.2.1c数据库类,参数lpszDSN指定数据源名称,lpszConnect参数也可以包含数据源名称。lpszDSN必须为空。如果在函数时未提供数据源名称,并将lpszDSN设置为NULL,则将显示数据源对话框,参数bExclusive说明是否独占数据源。当前版本的类库还不支持垄断,因此参数值必须为FALSE。也就是说,数据源是共享的。如果参数bReadOnly TRUE,则与数
8、据源的连接是只读的。参数lpszConnect指定连接字符串,该字符串可以包含数据源名称、用户帐户(ID)和密码等信息;字符串中的“ODBC”表示连接到ODBC数据源。如果参数bUseCursorLib为TRUE,则装载游标库,否则不装载,快照需要游标库,动态集不需要游标库。如果连接成功,则返回函数TRUE如果返回FALSE,则用户在数据源对话框中按了Cancel按钮。如果函数内部发生错误,帧将引发异常。以下是Open函数调用的一些茄子示例:CDatabase m _ db/在文档类中包含CDatabase对象/名为Student Registration的数据源m_db。连接到学生注册(op
9、en);/连接数据源时,指定用户帐户和密码m _ db.open (null、false、false、odbc)。DSN=学生注册;UID=ZYFPWD=1234);M_db。Open(空);/将出现数据源对话框弹出窗口。要从数据源拆离,请调用函数关闭。脱离后,可以重新调用Open函数以建立新连接。调用IsOpen以确定当前连接是否存在,然后调用GetConnect以返回当前连接字符串。函数声明为: virtual void Close();BOOL is open()const;如果返回TRUE,则在当前连接到const CString CDatabase的解析函数期间调用Close,因此删
10、除CDatabase对象可能会与数据源分离。CRecordView是CFormView的派生类,它提供了显示当前记录的西餐视图,用户可以通过西餐视图显示当前记录。查看唱片使您可以修改、添加和删除数据。一般而言,使用者应该建立CRecordView衍生类别,并在该对话框范本上控件作业。14.2.2 CRecordView类、唱片视图使用DDX数据更换机制在表单的控件和记录集之间交换数据。上述DDX在控件和控件父窗口的数据成员之间交换数据,而唱片视图在控件和外部对象(CRecordset的派生类对象)之间交换数据。清单显示了CRecordView派生类的DoDataExchange函数。牙齿函数知
11、道它与m_pSet指针指向的记录集对象的域数据成员交换数据。此外,交换数据的代码由ClassWizard自动生成。下面的示例说明如何使用ClassWizard将唱片视图与记录集对象相关联:在函数开始时调用CRecordset:Edit进入剪辑模式,调用UpdateData将控件数据更新为记录集对象的域数据成员,然后调用CRecordset:Update将域数据成员值写入数据源。这表示OnMove正在滚动记录函数中间有一个处理四个不同命令的分支语句,牙齿分支语句调用CRecordset的各种角色唱片成员函数(滚动到新记录时将该记录的内容设置为域数据成员的函数)。在函数的末尾调用UpdateDat
12、a(FALSE),将新当前记录的内容设置为表单的控件。因此,OnMove一次完成了两次西餐控件和数据源的数据更换过程。通过牙齿函数分析浏览记录时,您可以学习如何控制DDX和DFX数据交换。示例14.1创建了用于管理学生信息的数据库应用程序。由于使用ODBC数据源,因此必须首先创建数据库(此处使用Access创建)。创建步骤如下:(1)有关运行访问、构建和设置新数据库的方法,请参阅相关书籍。可以创建14.3 ODBC数据源的数据库管理员实例,(2)在数据库创建完成后创建ODBC数据源。单击计算机的“开始”按钮、“设置”“控制面板”命令选择、弹出控制面板对话框、双击ODBC数据源图标图14.1在控
13、制面板中创建ODBC数据源,并显示图14.2中所示的对话框弹出窗口。图14.2创建ODBC数据源,使用单击“用户DSN”选项卡上的“添加”按钮创建Access类型的数据源,对话框设置(如图14.3所示),选择上面创建的数据库,将数据源命名为“DSNSTUDENT”,图14.3设置数据源的名称,(按照以下步骤操作:运行AppWizard,将MFC AppWizard的新项目命名为“student”。第一步是选择语言支持中文的Single document。在第二步中,选择Database view with file support,然后单击执行Data Source按钮,将图14.4中所示的数
14、据源分配给程序。选择Dynaset,单击OK按钮作为集合类型,从弹出对话框(牙齿)中选择程序可用的表“学生”,图14.4在创建应用程序节目框架时指定数据源,第3步到第6步保留默认设置并完成应用程序的框架设计。这时先停下来仔细看看应用节目向导做的一切。生成的两个类与以前不同。一个是派生自CRecordView类的CStudentView类,CRecordView类是CFormView类的子类,它基于CFormView类添加了数据库支持功能。第二个是衍生自CRecordSet类别的CStudentSet类别。前面介绍了CRecordSet类。(4)西餐设计。在项目区域中,选择类视图区域以展开Dia
15、log,将显示的表单编辑为双击IDD_STUDENT_FORM,根据图14.5添加控件,然后根据表14.1设置控件属性。(请参阅书本表14.1),图14.5设计显示数据库数据的表单,运行类向导,然后在Member Variables选项卡中选择相应控件后的单击Add Variable按钮,从而将变量与控件相关联。所需的关联变量见表14.2。(见书表14.2)程序中应出现以下代码:void cstudentview 3360: dodata exchange(CDATA exchange * pdx)crecord view 33603360 dode/afx _ data _ mapDdx _
16、 fieldtext (pdx,IDC _ ezip,m _ pset-m _ zip,m _ pset);ddx _ fieldtext (pdx,IDC _ e telephone,m _ pset-m _ telephone,m _ pset);Ddx _ fieldtext (pdx,IDC _ ecity,m _ pset-m _ city,m _ pset);Ddx _ fieldtext (pdx,IDC _ e province,m _ pset-m _ province,m _ pset);Ddx _ fieldtext (pdx,IDC _ e address,m _ pset-m _ address,m _ pset);Ddx _ fieldtext (pdx,IDC _ emajor,m _ pset-m _ major,m _ pset);上述代码反映了视图中控件和变量的数据更换机制。在牙齿点调试执行器,如果顺利的话,可以看到图14.6所示的执行界面。界面与典型的单文档应用程序有很大的不同之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 占地补偿协议书性质
- 在家合伙创业协议书
- 宣传活动承包协议书
- 就业协议书几页组成
- 农民培训安全协议书
- 家里卖房协议书范本
- 章法普法赔偿协议书
- 离婚财产协议书草稿
- 楼宇对讲维修协议书
- 用电协议书范本模板
- 机电安装工程危险源识别评价清单1-发网上
- 肿瘤疗效评估新标准-mRECIST标准
- 全国普通高等学校招生统一考试(上海卷)考试手册
- 260吨汽车吊地基承载力验算
- 群文阅读指导课-二年级《一个一个连下去》课件
- 沉淀反应 沉淀反应(免疫学检验课件)
- 2023年考研考博-考博英语-河北工业大学考试历年高频考点真题荟萃带答案
- 西南18J202 坡屋面标准图集
- 农业合作社全套报表(已设公式)-资产负债表-盈余及盈余分配表-成员权益变动表-现金流量表
- 中国船舶工业供应商
- 高考语文复习:文学类文本专题训练拟写颁奖词
评论
0/150
提交评论