《《Visual C++NET程序设计教程与上机傅肌返1章数据库编程.ppt》由会员分享,可在线阅读,更多相关《《Visual C++NET程序设计教程与上机傅肌返1章数据库编程.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第11章章 数据库编程数据库编程 教学提示:在这一章中,主要向读者介绍数据库的基本概念、数教学提示:在这一章中,主要向读者介绍数据库的基本概念、数据库编程的常用技术以及结合数据库操作的实例,使读者能在据库编程的常用技术以及结合数据库操作的实例,使读者能在Visual C+.NET开发环境下掌握对数据库操作的方法。本章将重点介绍数据开发环境下掌握对数据库操作的方法。本章将重点介绍数据库的访问技术,如库的访问技术,如ODBC技术、技术、ADO技术,还介绍了如何配置数据源技术,还介绍了如何配置数据源等。学习完这些内容后,相信读者对等。学习完这些内容后,相信读者对Visual C+.NET环境下的数
2、据库环境下的数据库编程将会有一个比较全面的了解。编程将会有一个比较全面的了解。教学目标:掌握数据库的基本概念;掌握数据库编程技术的使用;教学目标:掌握数据库的基本概念;掌握数据库编程技术的使用;掌握注册数据源的方法;通过上机实践,初步掌握上述内容的灵活运掌握注册数据源的方法;通过上机实践,初步掌握上述内容的灵活运用。用。11.1 数据库基本概念数据库基本概念11.1.1 数据库、数据库、DBMS和和SQL概念概念11.1.2 数据库的几种访问技术数据库的几种访问技术11.1.1 数据库、数据库、DBMS和和SQL概念概念 数据库是数据的集合,它由一个或多个表组成。每一个表中都存储数据库是数据的
3、集合,它由一个或多个表组成。每一个表中都存储了对一类对象的数据描述,了对一类对象的数据描述,表表11.1就是一个典型的表。表的每一列描述就是一个典型的表。表的每一列描述了对象的一个属性,如了对象的一个属性,如ID、NAME等,而表的每一行则是对一个对象的等,而表的每一行则是对一个对象的具体描述。一般将表中的一行称作记录具体描述。一般将表中的一行称作记录(record)或行或行(row),将表的每一,将表的每一列称作字段列称作字段(field)或列或列(column)。数据库通常还包括一些附加结构用来。数据库通常还包括一些附加结构用来维护数据。现在普遍使用的一种数据库就是关系数据库。在关系数据库
4、维护数据。现在普遍使用的一种数据库就是关系数据库。在关系数据库中,数据的基本单位是关系,关系就是一张二维表,数据按行列有规则中,数据的基本单位是关系,关系就是一张二维表,数据按行列有规则的排列、组织。的排列、组织。返回表11.1 表的例子IDNAMEBIRTHDAYSEX1小李2001.12.07男2小张1980.11.05女3小王1984.12.08男返回11.1.2 数据库的几种访问技术数据库的几种访问技术 Visual C+.NET提供了多种访问数据库技术,如下所示:提供了多种访问数据库技术,如下所示:ODBC(Open DataBase Connectivity)MFC ODBC(Mi
5、crosoft Foundation Classes ODBC)DAO(Data Access Object)OLE DB(Object Link and Embedding DataBase)ADO、ADO.NET(ActiveX Data Object)返回11.2 ODBC编程技术的使用编程技术的使用11.2.1 MFC的主要的主要ODBC类概述类概述11.2.2 CDatabase类的使用类的使用11.2.3 CRecordset类的使用类的使用11.2.4 CRecordView类的使用类的使用11.2.1 MFC的主要的主要ODBC类概述类概述 因为因为CArchive是基于文件的
6、,所以在创建一个是基于文件的,所以在创建一个CArchive对象之前必对象之前必须要打开一个文件,须要打开一个文件,CArchive构造函数的第一个参数就是文件指针,其构造函数的第一个参数就是文件指针,其原型如下:原型如下:CArchive(CFile*pFile,UINT nMode,int nBufSize=4096,void*lpBuf=NULL);返回11.2.2 CDatabase类的使用类的使用 函数函数CArchive:Close()用来关闭用来关闭CArchive,在关闭之前要把缓冲,在关闭之前要把缓冲区中的所有数据存入文件,关闭之后中断区中的所有数据存入文件,关闭之后中断CA
7、rchive对象与文件的联对象与文件的联系。当关闭后,不能用它进行任何读写操作。必须先关闭系。当关闭后,不能用它进行任何读写操作。必须先关闭CArchive对象,再关闭与之相联系的文件,否则会出错;换言之,在关闭一对象,再关闭与之相联系的文件,否则会出错;换言之,在关闭一个文件之前必须关闭与之相连的所有个文件之前必须关闭与之相连的所有CArchive对象。对象。返回11.2.3 CRecordset类的使用类的使用 CRecordset类代表一个记录集。该类是类代表一个记录集。该类是MFC的的ODBC类中最重要、类中最重要、功能最强大的类。功能最强大的类。1.动态集、快照、光标和光标库动态集、
8、快照、光标和光标库2.域数据成员与数据交换域数据成员与数据交换3.记录集的建立记录集的建立4.Requery成员函数成员函数5.记录的过滤和排序记录的过滤和排序6.滚动记录滚动记录7.修改记录修改记录8.添加记录添加记录9.删除记录删除记录返回1.动态集、快照、光标和光标库动态集、快照、光标和光标库 在多任务操作系统或网络环境下,多个用户可以共享同一个数据源。在多任务操作系统或网络环境下,多个用户可以共享同一个数据源。共享数据的一个主要问题是如何协调各个用户对数据源的修改。共享数据的一个主要问题是如何协调各个用户对数据源的修改。记录集主要分为快照记录集主要分为快照(Snapshot)和动态集和
9、动态集(Dynaset)两种,两种,CRecordset类类对这两者都支持。这两种记录集的不同表现在它们对别的应用改变数据对这两者都支持。这两种记录集的不同表现在它们对别的应用改变数据源记录采取了不同的处理方法。源记录采取了不同的处理方法。快照型记录集提供了对数据的静态视图。快照是个很形象的术语,快照型记录集提供了对数据的静态视图。快照是个很形象的术语,就好象对数据源的某些记录照了一张照片一样。就好象对数据源的某些记录照了一张照片一样。动态集提供了数据的动态视图,当别的用户修改或删除了记录集中动态集提供了数据的动态视图,当别的用户修改或删除了记录集中的记录时,会在动态集中反映出来,当滚动到修改
10、过的记录时,对其所的记录时,会在动态集中反映出来,当滚动到修改过的记录时,对其所作的修改会立即反映到动态集中。作的修改会立即反映到动态集中。光标库光标库(Cursor Library)是处于是处于ODBC驱动程序管理器和驱动程序之驱动程序管理器和驱动程序之间的动态链接库间的动态链接库(ODBCCR32.DLL),光标库的主要功能是支持快照以及为,光标库的主要功能是支持快照以及为底层驱动程序提供双向滚动能力。底层驱动程序提供双向滚动能力。返回2.域数据成员与数据交换域数据成员与数据交换 CRecordset类代表一个记录集。用户一般需要创建一个类代表一个记录集。用户一般需要创建一个CRecord
11、set的派生类,为派生的记录集类创建一批数据成员,这些数的派生类,为派生的记录集类创建一批数据成员,这些数据成员与记录的各字段相对应,被称为字段数据成员或域数据成员。据成员与记录的各字段相对应,被称为字段数据成员或域数据成员。域数据成员用来保存某条记录的各个字段,它们是程序与记录之间的域数据成员用来保存某条记录的各个字段,它们是程序与记录之间的缓冲区。域数据成员代表当前记录,当在记录集中滚动到某一记录时,缓冲区。域数据成员代表当前记录,当在记录集中滚动到某一记录时,框架自动地把记录的各个字段复制到记录集对象的域数据成员中。当框架自动地把记录的各个字段复制到记录集对象的域数据成员中。当用户要修改
12、当前记录或增加新记录时,程序先将各字段的新值放入域用户要修改当前记录或增加新记录时,程序先将各字段的新值放入域数据成员中,然后调用相应的数据成员中,然后调用相应的CRecordset 成员函数,把域数据成员成员函数,把域数据成员设置到数据源中。设置到数据源中。返回3.记录集的建立记录集的建立 要建立记录集,首先要构造一个要建立记录集,首先要构造一个CRecordset派生类对象,然后调派生类对象,然后调用用Open成员函数查询数据源中的记录并建立记录集。在成员函数查询数据源中的记录并建立记录集。在Open函数中,函数中,可能会调用可能会调用GetDefaulConnect和和 GetDefau
13、ltSQL函数。函数的声明为:函数。函数的声明为:CRecordset m_RecordSet_Name(CDatabase*pDatabase=NULL);返回4.Requery成员函数成员函数 建立记录集后,用户可以随时调用建立记录集后,用户可以随时调用Requery成员函数来重新查询成员函数来重新查询和建立记录集。和建立记录集。Requery有两个重要用途:有两个重要用途:使记录集能反映用户对数据源的改变。使记录集能反映用户对数据源的改变。按照新的过滤或排序方法查询记录并重新建立记录集。按照新的过滤或排序方法查询记录并重新建立记录集。在调用在调用Requery之前,可调用之前,可调用Ca
14、nRestart来判断记录集是否支持来判断记录集是否支持Requery操作。要记住操作。要记住Requery只能在成功调用只能在成功调用Open后调用,所以程后调用,所以程序应调用序应调用IsOpen来判断记录集是否已建立。函数声明为:来判断记录集是否已建立。函数声明为:virtual BOOL Requery();throw(CDBException,CmemoryException);返回返回TRUE表明记录集建立成功,否则返回表明记录集建立成功,否则返回FALSE。若函数内部出错。若函数内部出错则产生异常。则产生异常。返回5.记录的过滤和排序记录的过滤和排序 CRecordset 类有两
15、个公共数据成员类有两个公共数据成员m_strFilter和和m_strSort用来用来设置对记录的过滤和排序。在调用设置对记录的过滤和排序。在调用Open或或Requery前,如果在这两个前,如果在这两个数据成员中指定了过滤或排序,那么数据成员中指定了过滤或排序,那么Open和和Requery将按这两个数据将按这两个数据成员指定的过滤和排序来查询数据源。成员指定的过滤和排序来查询数据源。返回6.滚动记录滚动记录 CRecordset提供了几个成员函数用来在记录集中滚动,如下所示。提供了几个成员函数用来在记录集中滚动,如下所示。当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容复当用这些
16、函数滚动到一个新记录时,框架会自动地把新记录的内容复制到域数据成员中。制到域数据成员中。void MoveNext();void MovePrev();void MoveFirst();void MoveLast();void SetAbsolutePosition(long nRows);返回7.修改记录修改记录 要修改当前记录,应该按下列步骤进行:要修改当前记录,应该按下列步骤进行:(1)调用调用Edit成员函数。调用该函数后就进入了编辑模式,程序可以成员函数。调用该函数后就进入了编辑模式,程序可以修改域数据成员。修改域数据成员。(2)设置域数据成员的新值。设置域数据成员的新值。(3)调用
17、调用Update完成编辑。完成编辑。Update把变化后的记录写入数据库并结束把变化后的记录写入数据库并结束编辑模式。编辑模式。返回8.添加记录添加记录 要向记录集中添加新的记录,应该按下列步骤进行:要向记录集中添加新的记录,应该按下列步骤进行:(1)调用调用AddNew成员函数。调用该函数后就进入了添加模式,程序成员函数。调用该函数后就进入了添加模式,程序可以把所有的域数据成员都设置成可以把所有的域数据成员都设置成NULL。(2)设置域数据成员。设置域数据成员。(3)调用调用Update。Update把域数据成员中的内容作为新记录写入数把域数据成员中的内容作为新记录写入数据源,从而结束添加。
18、据源,从而结束添加。返回9.删除记录删除记录 要删除记录集的当前记录,应该按下面两步进行:要删除记录集的当前记录,应该按下面两步进行:(1)调用调用Delete成员函数。该函数会同时给记录集和数据源中当前记成员函数。该函数会同时给记录集和数据源中当前记录加上删除标记。注意不要在一个空记录集中调用录加上删除标记。注意不要在一个空记录集中调用Delete,否则会产,否则会产生一个异常。生一个异常。(2)滚动到另一个记录上以跳过删除记录。滚动到另一个记录上以跳过删除记录。返回11.2.4 CRecordView类的使用类的使用 CRecordView(记录视图记录视图)是是CFromView的派生类
19、,它提供了一个的派生类,它提供了一个表单视图来显示当前记录。一个典型的记录视图如表单视图来显示当前记录。一个典型的记录视图如图图11.2所示,用户所示,用户可以通过表单视图显示当前记录。通过记录视图,可以修改、添加和可以通过表单视图显示当前记录。通过记录视图,可以修改、添加和删除数据。用户一般需要创建一个删除数据。用户一般需要创建一个CRecordView的派生类并在其对应的派生类并在其对应的对话框模板中加入控件。的对话框模板中加入控件。图11.2 记录视图返回11.3 应用数据库应用数据库11.3.1 注册数据源注册数据源11.3.2 创建应用程序创建应用程序11.3.3 添加资源和代码添加
20、资源和代码11.3.1 注册数据源注册数据源 先建立一个先建立一个Access数据库,如图数据库,如图11.3所示。为了简便,只包含了所示。为了简便,只包含了一个表,表名为一个表,表名为xs,内容也比较简单,将这个内容也比较简单,将这个Access数据库保存为文数据库保存为文件件student.mdb。图11.3 Access数据库返回 ODBC应用程序不能直接使用数据库,用户必须为要使用的数据应用程序不能直接使用数据库,用户必须为要使用的数据库注册数据源。注册数据源的工作由库注册数据源。注册数据源的工作由ODBC管理器完成,该管理器位管理器完成,该管理器位于于Windows控制面板的控制面板
21、的32位位ODBC内。下面为内。下面为Access数据库数据库student.mdb注册数据源。注册数据源。(1)打开控制面板,打开管理工具,双击打开控制面板,打开管理工具,双击【数据源数据源(ODBC)】图标,图标,则会显示一个则会显示一个【ODBC数据源管理器数据源管理器】,如,如图图11.4所示。在管理器中所示。在管理器中选择选择【用户用户DSN】选项卡,该选项卡只对用户可见,而且只能在用选项卡,该选项卡只对用户可见,而且只能在用户当前机器使用。户当前机器使用。返回(2)单击单击【添加添加】按钮,则会弹出一个按钮,则会弹出一个【创建新数据源创建新数据源】对话框。对话框。在该对话框中选择在
22、该对话框中选择Microsoft Access Driver(*.mdb),然后单击,然后单击【完成完成】按钮,如按钮,如图图11.5所示。所示。(3)接下来会显示一个接下来会显示一个ODBC Microsoft Access安装对话框,如安装对话框,如图图11.6所示,该对话框用来把数据库与一个数据源名连接起来。在所示,该对话框用来把数据库与一个数据源名连接起来。在【数数据源名据源名】文本框中输入文本框中输入“My database for VC”,然后单击,然后单击【选择选择】按钮,在随后弹出的对话框中找到并选择按钮,在随后弹出的对话框中找到并选择student.mdb。连续单击。连续单击
23、【确定确定】按钮后,一个名为按钮后,一个名为My databaye for VC的新数据源就被注册到的新数据源就被注册到了管理器中。了管理器中。返回图11.4 ODBC数据源管理器返回图11.5 【创建新数据源】对话框返回图11.6【ODBC Microsoft Access安装】对话框返回11.3.2 创建应用程序创建应用程序 本程序具有浏览记录集和修改记录这两个基本功能。现在开始建本程序具有浏览记录集和修改记录这两个基本功能。现在开始建立应用程序。首先完成程序框架的建立,请按下面几步进行:立应用程序。首先完成程序框架的建立,请按下面几步进行:(1)启动启动Visual Studio.NET
24、,指定一名为,指定一名为DBSample的的MFC工程。工程。(2)选择应用程序类型,按如选择应用程序类型,按如图图11.7所示进行设置。所示进行设置。(3)在左侧选择在左侧选择【数据库支持数据库支持】,如,如图图11.8所示,进行数据库的设置所示,进行数据库的设置(4)单击单击【数据源数据源】按钮,在弹出的按钮,在弹出的【选择数据源选择数据源】对话框中选择对话框中选择【机器数据源机器数据源】选项卡,并选中选项卡,并选中My database for VC数据源,如数据源,如图图11.9所示。所示。返回(5)单击单击【确定确定】按钮,则会打开一个按钮,则会打开一个【登录登录】对话框,如对话框,
25、如图图11.10所示。如果数据库没有密码,直接单击所示。如果数据库没有密码,直接单击【确定确定】按钮即可。按钮即可。(6)这时出现选择数据库对象对话框,展开表,选择这时出现选择数据库对象对话框,展开表,选择xs表表(图图11.11)。单击单击【确定确定】按钮退出。按钮退出。(7)单击单击【完成完成】按钮,建立工程。这时提示可能数据库会有密码,按钮,建立工程。这时提示可能数据库会有密码,如如图图11.12所示,这里直接确认,将在下面的介绍中处理这一情况。所示,这里直接确认,将在下面的介绍中处理这一情况。返回图11.7 设置程序类型返回图11.8 设置数据库支持返回图11.9 选择数据源返回图11
26、.10【登录】对话框 返回图11.11 选择表 返回图11.12 密码提示返回11.3.3 添加资源和代码添加资源和代码 在在【资源视图资源视图】对话框中选择对话框中选择Dialog,双击展开,双击展开(图图11.13),选,选中中IDD_MYSAMPLE_ FORM打开打开(图图11.14)。按照表。按照表11.4所示进行配所示进行配置。置。返回图11.13 资源列表返回图11.14 界面设计返回11.4 DAO编程技术的使用编程技术的使用11.4.1 如何选择如何选择ODBC与与DAO11.4.2 DAO应用程序的编写应用程序的编写11.4.1 如何选择如何选择ODBC与与DAO 由于由于
27、DAO可以访问可以访问ODBC数据源,下面几条可以作为数据源,下面几条可以作为DAO替代替代ODBC的理由:的理由:在某些情况下可获得更好的性能,特别是在访问在某些情况下可获得更好的性能,特别是在访问Microsoft Jet(MDB)数据库时。数据库时。与与ODBC兼容。兼容。DAO允许进行数据有效检查。允许进行数据有效检查。DAO允许用户说明表与表之间的关系。允许用户说明表与表之间的关系。当然,当然,DAO的出现并不意味着的出现并不意味着ODBC已经过时了。如果用户的工作已经过时了。如果用户的工作必须严格限于必须严格限于ODBC数据源,尤其在开发数据源,尤其在开发Client/Server
28、结构的应用程序时结构的应用程序时,用,用ODBC有较好的性能。有较好的性能。返回11.4.2 DAO应用程序的编写应用程序的编写1.编写编写MFC DAO应用程序的第一步应用程序的第一步2.数据查看选择数据查看选择3.带有带有DAO的文档和视图的文档和视图4.DBMS选择选择返回1.编写编写MFC DAO应用程序的第一步应用程序的第一步若要开始若要开始DAO应用程序的编写,必须做出两项基本决定:应用程序的编写,必须做出两项基本决定:希望应用程序内如何显示数据:按窗体方式、按列表方式、按某些其他希望应用程序内如何显示数据:按窗体方式、按列表方式、按某些其他方式或不显示数据。方式或不显示数据。希望
29、使用何种数据库管理系统希望使用何种数据库管理系统(DBMS)。返回2.数据查看选择数据查看选择MFC对不同的查看选择提供不同程度的支持:对不同的查看选择提供不同程度的支持:在窗口中一次显示一个记录。创建一个在窗口中一次显示一个记录。创建一个CDaoRecordView派生类,并将派生类,并将其连接到基于指定表的其连接到基于指定表的CDaoRecordset。这使得。这使得创建简单的基于窗口的创建简单的基于窗口的应用程序变得非常容易。应用程序变得非常容易。一次显示多个记录,可以相当容易地将一次显示多个记录,可以相当容易地将CDaoRecordset连接到连接到 CListView或者或者CTre
30、eView。在单独的窗口中或是在拆分窗口的窗格中同时显示多个数据视图。在单独的窗口中或是在拆分窗口的窗格中同时显示多个数据视图。返回3.带有带有DAO的文档和视图的文档和视图MFC应用程序的最简单结构是管理应用程序的最简单结构是管理MFC文档对象中的数据和管理在视图文档对象中的数据和管理在视图对象中单独显示该数据。但是,并不只限制于此结构。其他选择包括:对象中单独显示该数据。但是,并不只限制于此结构。其他选择包括:(1)使用视图对象,但将文挡作为未使用的附加物处理。使用视图对象,但将文挡作为未使用的附加物处理。(2)将数据直接绘制到将数据直接绘制到CFrameWnd派生类的工作区。派生类的工作
31、区。(3)使应用程序以对话框为基础。使应用程序以对话框为基础。返回4.DBMS选择选择 DAO基于基于Microsoft Jet数据库引擎。因此,数据库引擎。因此,DAO最适合用于最适合用于Microsoft Jet(MDB)数据库。数据库。DAO也支持访问外部数据库,包括某些可也支持访问外部数据库,包括某些可安装的安装的ISAM数据库数据库(数据库引擎可直接读取它数据库引擎可直接读取它)和和ODBC数据源。这意味数据源。这意味着可以使用着可以使用DAO编写与编写与DBMS无关的应用程序,目标是任何无关的应用程序,目标是任何Microsoft Jet数据库引擎可直接读取的数据库,或者用户有相应
32、数据库引擎可直接读取的数据库,或者用户有相应ODBC驱动程序的驱动程序的数据源。数据源。返回11.5 自动注册自动注册DSN和创建表和创建表11.5.1 自动注册自动注册DSN11.5.2 用用ODBC创建表创建表11.5.3 用用DAO创建表创建表11.5.1 自动注册自动注册DSN 无论是用无论是用ODBC还是还是DAO类,在访问类,在访问ODBC数据源以前,都必须先数据源以前,都必须先注册注册DSN。通过调用函数。通过调用函数SQLConfigDataSource,可以实现自动注册,可以实现自动注册DSN。当然,用。当然,用DAO可以直接访问一些常用的数据库,而不必通过可以直接访问一些常
33、用的数据库,而不必通过ODBC来访问。来访问。返回11.5.2 用用ODBC创建表创建表 由于由于ODBC类不支持类不支持DDL(数据库定义语言数据库定义语言),所以只有通过,所以只有通过ODBC API来创建表。程序需要调用来创建表。程序需要调用CDatabase:ExecuteSQL来直接执行来直接执行SQL语语句。句。返回11.5.3 用用DAO创建表创建表 由于由于DAO类直接支持类直接支持DDL,所以用,所以用DAO类创建表比类创建表比ODBC容易。容易。DAO的的CDaoTableDef类提供了对表结构的定义,该类提供了创建表的成类提供了对表结构的定义,该类提供了创建表的成员函数。
34、员函数。返回11.6 ADO编程技术的使用编程技术的使用 ADO是是Microsoft数据库应用程序开发的接口,对于在数据库应用程序开发的接口,对于在Windows上编写数据库程序的程序员来说,上编写数据库程序的程序员来说,ADO是最常使用的技术了,通过它是最常使用的技术了,通过它可以非常简单地实现数据库的连接以及数据访问。它被设计用来同新可以非常简单地实现数据库的连接以及数据访问。它被设计用来同新的数据访问层的数据访问层OLE DB Provider一起协同工作,以提供通用数据访问一起协同工作,以提供通用数据访问(Universal Data Access)。ADO向我们提供了一个高层的对向
35、我们提供了一个高层的对OLE DB的的自动封装接口,它简化了数据访问的过程,增加了数据访问的灵活性。自动封装接口,它简化了数据访问的过程,增加了数据访问的灵活性。但是由于但是由于ADO是一组由微软提供的是一组由微软提供的COM组件是建立在微软所提倡的组件是建立在微软所提倡的COM体系结构之上,它的所有接口都是自动化接口,所以在体系结构之上,它的所有接口都是自动化接口,所以在Visual C+.NET中使用中使用ADO时,要按照使用时,要按照使用COM的方式来调用。在这里大的方式来调用。在这里大概介绍一下概介绍一下Visual C+.NET中如何调用中如何调用ADO对数据库进行访问的。对数据库进行访问的。11.7 上上 机机 指指 导导 在本次上机指导中,将针对前面几节中的内容进行实际上机练习。在本次上机指导中,将针对前面几节中的内容进行实际上机练习。其主要内容包括:使用数据库编程技术对数据库进行实际操作等。其主要内容包括:使用数据库编程技术对数据库进行实际操作等。11.7.1 数据源的配置数据源的配置11.7.2 运用运用ODBC、DAO、ADO等技术对数据库操作等技术对数据库操作