C++中用ODBC和ADO方式数据库编程.doc

上传人:asd****56 文档编号:70344312 上传时间:2023-01-19 格式:DOC 页数:31 大小:4.98MB
返回 下载 相关 举报
C++中用ODBC和ADO方式数据库编程.doc_第1页
第1页 / 共31页
C++中用ODBC和ADO方式数据库编程.doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《C++中用ODBC和ADO方式数据库编程.doc》由会员分享,可在线阅读,更多相关《C++中用ODBC和ADO方式数据库编程.doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 VC+ 利用ODBC和ADO方式访问数据库的方法及实例大家一起努力学习软件开发,祝你取得成功!企事业管理信息处理的C+的数据库编程第1节 数据库的逻辑设计1.1 商品进销存数据库管理项目.等数据表。在表的数据结构设计中,字段名尽量采用“可读性”较好的标识符,在程序中看到它,也就知道它实际含义,即“说明”处的文字解释。下面就是这样做的,在。1.2 学生成绩管理数据库项目 在下面的讨论中,结合本教科书(详见第247页),不妨做“学生成绩管理数据库”,它有三个数据表: 学生信息表(学号/C/8,姓名/C/8,性别/C/6,出生日期/C/10,身高/C/4,专业/C/16) 表名为StudentTa

2、ble (number , name , sex , birthdate , height, specialty ) 课程表(课程号/C/8, 所属专业/C/20,课程名/C/10,学分/C/4 ,考试时间/C/10 ) 表名为CourseTable (CourseNumber , ForSpecial , CourseName , TotalCredit, TestDate ) 学生成绩表(学号/C/8, 课程号/C/8,成绩/C/6 ) (studentNO, courseNo, score ) 表名为StudentScoreTable 上面的数据库,不管是在ACCESS系统中设计的,还是

3、在SQL Server系统中设计的,VC+的使用和SQL语句引用的方式是一样的、效果是一样的。 C+特别适合做“文本(类型CString)”处理。在学生成绩管理数据库中,各字段一律定义为“文本型”,当字段实际类型是数值型或要做算术运算时,C+提供了将数值字符串转换为算术型量转换函数: atoi(str)、atol(str)依次将串转换为int、long;而atof(str)转换double或float型。第2节 数据库管理系统和数据库的物理设计2.1 用ACCESS系统创建学生成绩管理数据库 2.2 用SQL Server系统创建学生成绩管理数据库 省略2.3 将创建的数据库添加到系统数据源O

4、DBC的“用户DSN”中 例如:由ACCESS创建的数据库,它是一个容器型文件,扩展名为“.mdb”。所以,上述数据库文件是“学生成绩管理.mdb”。 操作:“开始 / 控制面板 / 性能和维护 / 管理工具 / ODBC数据源 ”,则弹出“ODBC数据源管理器”对话框。先选择“用户DSN”,再按“添加(D)”按钮: 按“添加”按钮之后,又弹出下面“创建新数据源”对话框: 取数据源的驱动程序“Microsoft Access Driver (*.mdb)”之后,按“完成”按钮。当按“完成”按钮之后,系统回到第2步,弹出下面“ODBC Microsoft Access安装”对话框。在此,完成将已

5、经设计的ACCESS系统的数据库送入系统ODBC并且命名(数据源(N):处填写)。例如,将“学生成绩管理.mdb”数据库,送入系统数据源ODBC中并且命名为StudentAndJava: 第3节 C+开发应用程序的基本知识3.1 VC+系统的几个重要的英文词语 (1)Identifier 标识符(俗话讲“名字”),缩写词是ID。 (2)MFC Microsoft Foundation ClassLibrary 微软的基础类库。 (3)Application(App) 泛指“应用”(程序)。 (4)API Application Programming Interface 应用程序接口。 (5)

6、AFX Application Frameworks 应用程序框架。 (6)AppWizard 应用程序向导。 (7)WorkSpace VC+的工作空间视窗,有三个页(面): ClassView页:“类”视图页,展示当前应用程序所用的类。 ResourceView页:“资源”视图页,展示当前应用程序所用的资源(如Dialog和Menu等)。 FileView页:“文件”视图页,展示当前应用程序所存放的文件(如扩展名为.cpp、.h文件)。 (8)ODBC Open Database Connectivity(开放的数据库连接)。为各种类型的数据库管理系统提供了统一的编程接口,例如不同数据库系

7、统的驱动程序。3.2 MFC中提供的基类(Base Class) (1)CObject 是大多数类的基类,完成动态空间的分配与回收,支持一般诊断与出错处理。 (2)CCmdTarget 负责将系统事件(消息)和窗口事件(消息)发送给响应该事件的对象。 (3)CWinApp 是CCmdTarget类的派生类,完成对线程的控制(线程的建立、运行、终止、挂起)。 (4)CDocument 是文档类,包括应用程序在运行期间所得到的数据。 (5)CWnd 是通用窗口类,提供Windows中的所有通用特性、对话框和控件。 (6)CFrameWnd 是从CWnd继承来的,实现了标准的框架应用程序。 (7)C

8、Dialog 用来控制对话框窗口。 (8)CView 用于让用户通过窗口来访问文档。 (9)CMDIFameWnd 是一个简化的窗口框架(没有最大化和最小化按钮),用于多文档应用程序的主框架窗口的显示和管理。 (10)CMDIChildWnd 用于文档子窗口的显示和管理。 (11)动态记录集CRecordSet 选择和连接ODBC中数据库的某个“表”。3.3 C+的对话框(表单视图)中最基本“控件”的使用 (1)静态文本(Static Text) 设计“标签”,默认的ID是“IDC_STATIC”。不接受用户的输入,不产生通知消息。例如,书写数据库的字段名、提示词。 (2)组框(Group B

9、ox) 定义一个矩形框,默认的ID是“IDC_STATIC”。矩形框内可以放按钮等控件,使界面设计“好看”一点。 (3)编辑框(Edit Box) 在对换话框中用于设计文本数据的显示或输入,系统默认的ID是“IDC_EDIT1”,用其属性对换话框中“General”选项后,用户可重新命名字(例如:IDC_STATIC_number)。 (4)命令按钮(Button) 映射消息:BN_CLICKED 单击,BN_DOUBLECLICKED 双击,响应“单击”消息的是“事件(Events)”函数程序。系统默认的ID是IDC_BUTTON1。C+中的消息驱动机制 Windows的环境中,系统产生的动

10、作和用户程序运行产生的动作“称为”事件(Events)产生的消息(Message),Windows是通过系统发送消息来完成用户输入的。 例如:用户按鼠标左按钮,系统发送 WM_LBUTTONDOWN 消息; 用户敲一个字符键,系统发送 WM_CHAR 消息; 用户进行菜单选择、工具按钮单击等操作,系统发送 WM_COMMAND 消息; C+中的资源 应用程序中的光标、菜单、工具栏、位图、对话框、.,都是资源,系统都用相应的“标识符”来区分。这些资源,像VC+中的常量一样,可以被编辑和修改。VC+的许多编辑器,都能达到“所见即所得”的设计效果。 例如:IDOK为对话框中“确认”,IDCANCEL

11、为对话框中“取消”,BN_CLICKED为单击按钮。Windows的动态连接库(.DLL) 实现用户界面、在屏幕上显示文本和图形,都是通过动态连接库来实现的。动态连接库是一些具有扩展名为DLL文件,文件中是一些特殊结构的函数。 例如:USER32.DLL,负责窗口管理,功能有消息、菜单、光标、计时器,其它与控制窗口显示相关的功能。3.4 在C+中创建一个工程(Project)并且附带数据库的基本步骤 (1)在C+环境中,选择菜单“文件/新建”,在弹出的“新建”对话框中,取“工程/MFC AppWizard(exe)/给工程命名”。例如,工程名是“学生成绩管理”: (2)在MFC向导的第1步,选

12、择“S单个文档”(或M多重文档),然后按“下一步”按钮。即,要创建一个表单视图(界面),在界面上设置各种“控件”:(3)在MFC向导的第2步,取“W数据库查看使用文件支持”,并通过命令Data Source去浏览已经存放在ODBC中的数据库及其数据库中的一个表: 数据库和数据表选择成功后,按MFC向导对话框中“完成”按钮以及最后的“确定”按钮,就进入下面的C+的MFC开发环境。可以用“工具箱”中的控件在界面上设计了,例如控件(标签、文本框、组框、命令按钮,在工具箱中的图标依次是)。 注意:“W数据库查看使用文件支持”将数据库与表单视图连接在一起,或者说建立了“表单视图与记录集”之间的联系,系统

13、自动产生了程序操作数据库的指针m_pSet-。第4节 用C+做应用程序开发中的技术或技巧的汇总4.1 数据库指针“m_pSet-”常用的成员函数(完成不同的功能) (1) 激活界面中控件 UpdateData( TRUE ); 激活表单中控件,例如m_Name、m_Number、m_Result等。 UpdateData( FALSE ); 使用户能看见表单视图(界面上)当前记录的m_Name、m_Number、等的变化 (2)数据指针的位置的确定 m_pSet-IsEOF( ) 是否遇到数据表尾,“是”返回值为真。 m_pSet-IsBOF( ) 是否为数据表文件头。 m_pSet-Move

14、First( ); 指向第1个记录 m_pSet-MoveNext( ); 指向当前位置的下一个记录 m_pSet-MovePrev( ); 指向当前位置的前一个记录 m_pSet-MoveLast( ); 指向最后一个记录 m_pSet-m_字段名;(例如:学号字段,m_pSet-m_number) (3)在数据库中添加一个新记录 m_pSet-AddNew( ); 追加一条新记录的功能函数在此语句之后,书写向数据库追加的记录的各个字段。最后写下面两句换话: m_pSet-Update( ) ; 新记录写入数据库的数据表。 m_pSet-Requery( ); 刷新记录集。这将改动“物理”数

15、据库。 (4)删除数据库中当前显示的记录 m_pSet-Delete( ); 删除“当前显示”的记录时,有时会出现“”字样回显。 (5)执行“统计或查询”类命令的一般程序模式 在对话框上添加一个“命令按钮”,再创建该命令的事件(Events.)函数,在函数体内书写程序,组织“循环、判定、数据指针移位”等操作。例如:m_pSet-MoveFirst( ); while( !m_pSet-IsEOF() ) 没有遇到数据表尾时继续循环。 统计和判断语句;放结果信息的控件m_Result 成员变量; MessageBox(按确定键看下一个记录,对话框, 0 ); m_pSet-MoveNext( )

16、; 4.2 应用程序执行时的“人机交互”办法 可以引用系统内部的人机交互对话框,下面的是它们一般格式: AfxMessageBox(提示信息, int, int ); 窗口标题不能自己确定 MessageBox(提示信息,窗口标题, int ); 可以自己确定窗口标题 (1)AfxMessageBox(窗口内提示信息,标题默认为项目名, 100, 10 ); 返回值是整数。 有“是(Y)”、“否(N)” 两个按钮,选择“是(Y)”函数返回值 6、 “否(N)”函数返回值 7。 (2)MessageBox(窗口内提示信息,窗口标题, 0 ); 只有一个“确定”按钮,返回值是整数1。 如果是 in

17、t flag = MessageBox( 窗口内提示信息, 窗口标题,100 ); 有“是(Y)”、“否(N)” 两个按钮,选择“是(Y)”函数返回值 6、 “否(N)”函数返回值 7。 用户在程序中用if语句判flag中保存的返回值 ,决定执行“则”或“否则”动作。 (3)利用字符串“并置”运算,将记录的各个字段“合并”到1个字符串变量中,放到MessageBox()或者AfxMessageBox()中,作为提示信息随时输出。 例如:CString info=0; info = 学号:t + m_pSet-m_number + n; info += 姓名:t + m_pSet-m_name

18、+ n; info += 性别:t + m_pSet-m_sex + n; info += 身高:t + m_pSet-m_column1 + n; info += 出生日期:t + m_pSet-m_birthdate + n; if( 查询条件满足 ) MessageBox( info, 查询到的记录如下:,100 ); return; 4.3 更改应用程序的“标题” 在C+环境中创建的“项目(Project)”,例如“学生成绩管理”工程,做“编译、连接、运行”时,结果显示为: 在标题栏上出现了“无标题”字样。我们希望将“无标题学生成绩管理”中的“无标题”去掉,改成设计者自己定义的标题,例

19、如换成为“学生成绩管理”。 方法是:在Class View 页,展开类CMyApp(因为我们用汉字“学生成绩管理”作为工程名,C+不识别“汉字标识符”,所以工程类名用My代替,全名是CMyApp),双击函数InitInstance。双击函数InitInstance之后,在弹出的源码文档中,找到函数InitInstance的下面显示位置(该函数尾部),添加“深色”的一行: m_pMainWnd-SetWindowText(学生成绩管理);/新加的 再重新“编译、连接、运行”,结果的标题就变成为希望的了:4.4 在主界面(main()函数所在地)用命令方式操作另一个对话框中的成员变量。 这是开发较

20、复杂项目时必然出现的问题。例如,对一个数据表作记录添加时,用另一个对话框接受用户输入的字段值,在调用处启动该对话框中,然后引用其控件的成员变量,再做记录添加操作。同样,做不同数据表操作时,有时也需要“交流信息”,也可以用这样办法来实现。 (1)在主调文档中用Insert Dialog命令新建立一个对话框,命名为Dlg1Name。 在VC+的工作空间视窗中选择“资源页ResourceView”,然后“右击”Dialog,在弹出的快捷菜单中选择“Insert Dialog”(见下图),则出现一个对话框,按“Ctrl + W”键之后,给该对话框命名为Dlg1Name(以后再插入对话框时,可以命名为D

21、lg2Name、Dlg3Name、Dlg4Name等)。 当单击选项“Insert Dialog”之后,出现下面只带“OK和Cancel”两个按钮的对话框,默认的ID是IDD_DIALOG1、默认的标题是Dialog : 按“Ctrl + W”键之后,系统弹出“Adding a Class”对话框,按“OK”按钮,则出现给该对话框资源命名字的“New Class”对话框,我们输入Dlg1Name(这个名字就是IDD_DIALOG1以资源方式出现在程序中,是程序员操作该对话框的手段,请见下面(2)点),然后按“OK”按钮:(2)在IDD_DIALOG1对话框中设置“标签、文本框”等控件,并将控件

22、映射到对应的成员变量,见下图。在主调处设计一个命令按钮,在命令按钮的事件函数中说明“Dlg1Name dlg;”对象,请并用对象dlg去操作IDD_DIALOG1对话框中的成员变量。 例如:对话框中的成员变量是:m_number和m_name 用对象操作是:dlg.m_number 和 dlg.m_name#include Dlg1Name.hvoid CMyView:OnButtonAdd( ) /记录添加模块,操作另一个对话框: Dlg1Name dlg; if( dlg.DoModal()=IDOK ) /按IDD_DIALOG1 的“OK”按钮返回之后: m_pSet-AddNew(

23、); /先执行追加新记录的功能函数AddNew() m_pSet-m_number = dlg.m_number;/给学号、姓名字段赋值: m_pSet-m_name = dlg.m_name; /. . 其他字段 m_pSet-Update( ) ; /新记录写入数据库的数据表 m_pSet-Requery( ); /刷新记录集。这将改动物理数据库。 (3)将新插入对话框(例如IDD_DIALOG1)的默认标题“Dialog”改成有实际意义的窗口标题。 例如:这是做记录插入用的对话框,所以对话框标题取作“添加记录对话框”。在该对话框的属性窗口(Dialog Properties)中,写上新的

24、标题:4.5 在新建对话框(如IDD_DIALOG1)中“连接ODBC的数据源”的方法 (1)如果连接主控文档m_pSet-所指向的那个数据表时 先找到项目的“头文件(“学生成绩管理Set.h)”,展示了其中的“类名(CMySet)”,然后在新建对话框的.CPP文件中添加: #include “学生成绩管理Set.h” CMySet pset ; 通过对象pset即可操作字段名和记录移动等功能函数。 例如: pset.Open( ); 和pset.m_number;(2)使用系统基类CRecordset为新建对话框连接ODBC中的其他数据表 按“Ctrl + W”键,进入MFC Class W

25、izard,然后操做下面三步: 当第3步点击“New.”之后,弹出下面“New Class”对话框,操作(1)和(2)之后按“OK”:上面按“OK”按钮之后,弹出“DataBase Options”对话框,这时要选择数据库、点动态使用。然后按该对话框左上角的“OK”按钮,进入(Select Database Tables)选择数据库中某个数据表的对话框,选定一个表。要操作对话框Dlg1Name中已经连接上的命名为Dlg1Dataset的数据表时,可用下面代码: #include Dlg1Dataset.h Dlg1Dataset pset; pset.Open( ); pset.m_字段名;

26、pset.m_ MoveNextt( ); . 等4.6 如果后台数据库或数据库中的数据表“结构修改了”,那么原来的C+的表单文档如何办? 请注意:m_pSet-是MFC AppWizard建立的,目的是建立“表单视图与记录集”之间的联系。但是,有一个“弱点”:当ACCESS库或SQL库中的数据表“结构被修改时”,则VC+中表单文档就不识别了。 可以在MFC AppWizard的环境下,用Update Column与Bind All按钮来重新修改。要注意的是“只能用于开始创建项目时的带数据库的、含main()函数的单个文档”,因为指针m_pSet-是唯一的。P254图8.14。 (1)将原来的

27、“Member Variables”的成员变量(上图CYYYSet下的),用Delete Variable命令一一删除,然后再单击Update Column按钮,重新从数据源ODBC中选择“数据库”和“表”。 (2)对第1步重新连接的数据库及表,单击Bind All按钮,则重新添加相关联字段。4.7 在当前正在开发的项目(Project)的“工具箱”中添加新控件的方法 例如在MFC环境下,往项目“学生成绩管理”对话框的工具箱中添加ADO Data 控件,过程为: (1)使用C+菜单“工程/添加工程/Components and controls ”,则弹出Components and cont

28、rols Gallery对话框; (2) 在该对话框中双击“Registered Activex Controls”文件夹;在展开的Registered Activex Controls文件夹内,使用滚动条寻找所需要的控件。例如ADO Data 控件,对应的文件为Microsoft ADO Data Control,version 6.0 OLEDB。 (3)找到控件所对应的文件之后,点击该文件名(即选中),然后按“Insert”按钮(这之后的系统询问,一律使用默认值),最后将控件插入到“工具箱”之中,方便使用。注意:往工具箱内添加其他控件的做法,与上面操作过程类似。 DataGrid控件:

29、对应文件(Microsoft DataGrid Control,version 6.0 OLEDB) DataCombo控件:对应文件(Microsoft DataCombo Control,version 6.0 OLEDB) Web控件: 对应文件(Microsoft Web Browser )4.8 标签(Static text )控件建立时,系统默认的ID是“IDC_STATIC”。在它的属性对话框中,要给它一个命名,比如是“IDC_STATIC_QUERY”。注:增加英文词Query,是为了增强该标识符的可读性。 在操作命令“查询记录”所对应的模块函数体内加下面源代码(注意:只有命令

30、按钮的事件函数内才能用):CStatic *pwnd=(CStatic*)GetDlgItem( IDC_STATIC_ QUERY );pwnd-SetWindowText(输入要查询的学号:); 这样,命令“查询记录”运行时,动态文本信息将送进标签IDC_STATIC_ QUERY 的框架内。其它“命令按钮”使用时类似。 动态地更换组框(Group Box)的标题 void CEx_MCIView:OnButtonTop( ) CStatic *pwnd=(CStatic*)GetDlgItem( IDC_STATIC_top ); pwnd-SetWindowText(请编辑当前记录的相

31、关字段值); 第5节 使用C+的MFC AppWizard和ADO技术创建表单视图和连接数据库5.1 主控窗口带数据库使用m_pSet-指针,其他对话框使用ADO控件完成数据库的插入、删除、查询、修改等操作。 (1)采用“3.4”节的做法,在C+中创建一个工程(Project)并且附带数据库。 (2)采用“4.4”节的做法,在工程中插入新的对话框并且命名字。 (3)采用“4.7”节做法,在项目(Project)的“工具箱”中添加ADO Data 控件、DataGrid控件。在新建对话框中设置ADOData 控件和DataGrid控件,状态如下:查看对话框上的控件Adodc1或DataGrid1

32、的属性时,右击该控件,在弹出的窗口内选择“属性”:这就打开控件属性窗口(Properties),在此对控件做下面的属性(Property )值设置:设置控件Adodc1和DataGrid1的属性,连接数据库及表。 在Adodc1属性对话框中:ConnectionString 属性填:DSN=StudentAndJava 记录源(RecordSource) 属性填:命令方式和访问的表 而DataGrid1的属性:DataSource 属性值取IDC_ADODC1控件所绑定的。 (4) 主调处用命令方式打开对话框(例如下面代码),效果为#include Dlg2Name.hvoid CMyView

33、:OnButtonQuery( ) Dlg2Name dlg; if( dlg.DoModal( )=IDOK ) AfxMessageBox(打开数据编辑对话框); UpdateData(FALSE); 5.2 使用DataGrid控件的选项功能,在DataGrid的列表上做记录的追加、删除、字段值的修改。 (1)DataGrid属性选择(下图)。 (2)如果主空界面的m_pSet-数据库表和DataGrid操作的数据库表是同一个,则两个窗口可以同步。 (3)ADO操作的数据库,既可以是ACCESS的、也可以是SQL Server的,模式一样。 注意:因为做“记录追加、记录删除”时,涉及“数

34、据库的表”物理改动,有一个响应时间问题,所以用“新建对话框”教适宜,主控模块用“命令调用”方式,启动一次对话框,做一个记录的“追加”或者“删除”操作。 由ADO data 控件提供数据源的DataGrid列表能够提供记录“添加、删除、更新(即修改)”等操作,见下图的标识,应该充分利用它。 (4)用DataGrid列表作记录删除时,先用鼠标器选择要删除的记录行(则行变为有底色),然后按人热键“DELETE”。主调对话框也被删除。 (5)用DataGrid列表做记录插入时,先用鼠标器指到“*”标记行,然后将光标移进“相关字段”并输入新数据。记录录入完成后,按“OK”按钮:主调对话框可以看到新记录。

35、 (6)在DataGrid的列表中,做记录字段值修改时,随时可以用鼠标器点击到“目标字段”,然后光标在“该字段”闪动,用户进行修改字段数据。修改完成后,按“OK”按钮返回。5.3 DataGrid控件的选项功能“允许添加(记录追加)、允许删除(记录删除)、允许更新(字段值修改)”,但是数据查询和统计功能需要自己设计。 做法:用Insert Dialog 插入一个对话框,命名为Dlg3Name,标题是“数据查询和统计对话框”,在此设计查询键、查询命令。查询命令的事件处理函数,完成被查询对象的操作,即对相关数据表的访问。 源代码: (1)主控处“查询记录”事件的程序:#include Dlg3Na

36、me.hvoid CMyView:OnButtonQuery( ) Dlg3Name dlg; dlg.DoModal( ); (2)“数据查询和统计对话框”中查询命令的程序:#include 学生成绩管理Set.h void Dlg3Name:OnButtonQuery( ) /对话框3中,访问主控界面的数据库 CMySet pset; UpdateData(TRUE); pset.Open(); pset.MoveFirst(); while ( !pset.IsEOF() ) if ( m_number=pset.m_number | m_name=pset.m_name ) CStri

37、ng info=0; 查询条件满足 info = 学号:t + pset.m_number + n; info += 姓名:t + pset.m_name + n; info += 性别:t + pset.m_sex + n; info += 出生日期:t + pset.m_birthdate + n; info += 专业:t + pset.m_specialty + n; MessageBox( info, 查询到的记录如下:,100 ); return; else pset.MoveNext( ); 然虽在一个“主控文档窗口”内 ,既可以用指针m_pSet-操作数据库,同时也可以用ADO

38、控件操作同一数据库,只因为DataGrid控件做“记录追加、记录删除”时要物理地修改数据库,有时运行不正常。因为ADO和DataGrid的“游标”定位方式,与m_pSet-操有差异的。 当DataGrid表中,要将原来的英文字段名(如CourseNumber)换成汉字输出时,应在Adodc1控件的“记录源”选项中,用命令SQL语句,一般格式为: SELECT CourseNumber AS 课程号 , CourseName AS 课程名 FORM CourseTable5.4 引用ADO Data控件数据源的DataCombo控件、DataList控件的使用方法。 C+系统中,一个对话框中可以

39、设置多个Adodc 控件,但是一个Adodc 控件只能连接数据库的一个(记录源)表。 DataCombo和DataList操作数据表,像DataGrid控洋那样,也要依靠Adodc 控件连接的数据库。所以,要想DataGrid、DataCombo、DataList访问不同的数据表,必须各自用Adodc1 控件。右击“DataList”控件,在掸出快捷菜单中取“属性(R).DataList Object”,则有:先在属性“RowSource”项下指定“IDC ADODC1”;再在属性“ListField”项下选择被LIST的字段(例如“商品名”,但是一个DataList控件只能输出一个字段)。注

40、:实现“DataCombo”控件的使用时,类似DataList控件的做法。例如将商品编号字段“shangpinID”放入:第6节 C+数据库编程中的常规算法和实现 在“5.3”节已经讲到:DataGrid控件的选项功能“允许添加、允许删除、允许更新”,能方便完成记录追加、记录删除和字段值修改。但是,对数据库的大量查询和统计操作不能完成,这需要程序员自己来设计程序了,这就是第6节要讨论的问题。 ?做法:用Insert Dialog 插入一个对话框,命名为Dlg3Name,标题是“数据查询和统计对话框”,在此设计查询键、查询命令。查询命令的事件处理函数,完成被查询对象的操作,即对相关数据表的访问。

41、 ?当没有DataGrid列表自动提供的操作功能的时候,自己书写功能程序。这是要学会的。6.1 一个简单的方案:数据浏览和数据追加、删除、修改、查询和统计等操作都在主控窗口,数据指针是系统给的m_pSet-。这样做的要求是:(1)记录查询时:必须是先赋给了查询键值。若执行“查询”命令时没有输入查询键值,则不执行“查询的模块程序”而返回。(2)删除当前记录时:必须是浏览到了要删除的记录。若执行“删除”命令时没有指定到记录位置就返回,则不执行“m_pSet-Delete( );”命令。(3)记录追加时:仍然是采用在另一个对话框中交互式地键入各字段数据,存放在对话框的各个成员变量中,从对话框返回后,

42、定义该对话框的对象dlg,通过dlg引用成员变量程序执行,在m_pSet-AddNew( )命令执行后,依次将“dlg.成员变量 赋值给 m_pSet-字段名”。(4)修改记录时:即做当前记录的相关字段内容修改。在当前记录中,鼠标器点击的字段,光标进入,则键入新数据,然后执行命令m_pSet-Edit( ),则数据库被物理地修改。如果你点击“修改记录”命令之前,没有指定到记录位置、或者没有修改当前记录的字段值,则不执行命令m_pSet-Edit( )。自己设计的查询模块:void CMyView:OnButtonQuery( ) CRecordsetStatus status; m_pSet-GetStatus(status); /必须及时跟踪指针m_pSet-所指的记录号 UpdateData(TRUE);/激

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁