




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南科技大学计算机科学与工程学院数据库课程设计指导书(09级计算机、网络、信息安全专业用)彭理 编2011年11月前 言市场调查表明,数据库应用开发以及与数据库应用开发相关的其他应用占据整个计算机应用的70%以上,掌握数据库应用开发技术成为计算机专业大学生必备掌握的技术之一,这其中如何选择后台数据库管理系统和前台数据库应用开发工具显得尤为重要。目前市面上流行的后台数据库管理系统有:适合大型企业的Oracle,适合中小型企业的MS SQL SERVER,以及开源的MySQL。考虑到数据库管理系统的易操作性以及我院实验室的实际情况,宜采用MS SQL SERVER作为同学们课程设计的后台数据库管理
2、系统。至于前台数据库应用开发工具的选择就要复杂得多。从早些年流行的PB、Delphi,到近几年流行的VB、VC、Java,以及广泛流行于互联网上的.NET、J2EE技术,可供选择的开发工具比比皆是,让开发者眼花缭乱。考虑到。NET、J2EE技术采用的是典型的B/S计算模式,是大四后续课程涉及到的开发技术,目前不适合于作为数据库系统这门课程的实践教学开发环境.经典的数据库应用开发是典型的C/S计算模式,即应用数据库前端开发工具编写客户端程序,通过客户端程序来连接和访问后台数据库.从市场占有率来看,VB作为数据库前端开发工具,以其入门容易、操作灵活简便的优势,目前市场占有率较高.Java技术作为前
3、台数据库应用开发工具,以其与平台无关性,目前也得到数据库应用开发者越来越多的青睐。但同学们没有学习过VB和Java的编程技术,只学习过C/C+,因此,用C+作为前台数据库开发的工具也是一种不错的选择。虽然VB能够很好地完成业务逻辑比较简单的MIS系统开发,然而当开发的系统规模较大,开发的代码必须被不同平台共用,或者编写数据库实用程序时,选择VC作为开发工具更加适宜.在对数据库支持、使用的灵活性及执行效率方面,VC是最全面和最强大的。VC全面支持ODBC、ADO、DAO、OLE DB和RDO等技术。只要熟练掌握,很容易看到VC是一种不可或缺的数据库应用开发工具.本课程设计指导书是应学院要求编写的
4、,编写过程中得到了学院领导的支持、系部同事的帮助,特别感谢王志喜老师的大力支持,文中的课程设计题目主要是王老师提供的。由于编写时间仓促,本课程设计指导书中的不当之处,欢迎老师、同学们提出意见。 编者 201111-27目 录第一部分 课程设计的目的、内容及安排. 1第二部分 VC+6.0访问SQL SERVER数据库技术 32.1 ADO访问数据库的相关知识。 32。1.1 VC+6。0集成开发环境及MFC编程简介 32。1.2 VC+中连接数据库的常用方法。 32.1.3 ADO方法 。32.2 ADO访问数据库的例子。72。2。1 数据库及数据库表的建立.72.2。2 查询数据-使用SEL
5、ECT102。2。3 插入数据使用INSERT152.2。4 更新数据-使用UPDATE182。2.5 删除数据-使用DELETE212.2。6 多表联接查询。.24第三部分 课程设计题目。.28题目1 学生信息管理系统。28题目2 教学管理系统。32题目3 人事管理系统.36题目4 考勤管理系统.40题目5 工资管理系统。44题目6 员工培训管理系统。48题目7 企业内部行文管理系统.。52题目8 医院管理系统.56附 录 课程设计报告封面。60第一部分 课程设计的目的、内容及安排一、课程设计目的数据库课程设计是计算机专业集中实践教学环节之一,是学习完数据库系统概论课程后进行的一次全面的综合
6、练习。其目的在于加深对数据库基础理论和基本知识的理解,掌握使用VB、C+、Java、Delphi、PowerBuilder等数据库前端开发工具,提高同学们运用数据库技术解决实际问题的能力.二、课程设计内容及要求用C+、VB等或其它前端开发工具制作一个小型管理信息系统。所设计的小型管理信息系统应包含查询、插入、删除、修改、统计、用户权限管理等基本功能,界面采用菜单的形式。根据课程设计2周时间的安排,同学们宜选择适当大小的设计课题,并根据题目的基本需求,给出概念模型与逻辑模型,编写程序和写出详细的设计说明书。开发工具可选用VB、Delphi、VC、Powerbuilder、Java等,考虑到Fox
7、pro、Access等并不是真正意义上的数据库管理系统,所以本课程设计要求不能使用Foxpro、Access作为开发工具。数据库管理系统推荐使用SQL SERVER,也可以使用MySQL或Oracle。 三、课程设计安排1、课程设计时间:学习完数据库系统概论课程后2周.2、课程设计地点:逸夫楼四楼专业实验室。详细安排另附表.3、分组和选题:三人一组,从给定的参考题目中任选一题,也可选择其它难度和工作量相当或更高的类似题目。学习委员将本班分组及选题情况交指导老师。四、课程设计的考查1、考查时间:课程设计开始后第2周星期四和星期五。2、评分标准:由指导教师根据学生课程设计过程中的学习态度、完成任务
8、的情况和课程设计报告的质量等综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级.3、考查内容:包括程序测试和课程设计报告两部分。五、相关要求 首先,要求同学们先仔细阅读本指导书的第一部分和第二部分的内容.然后根据下面要求完成本课程设计的任务。1程序要求:(1)要求程序能够正确运行.(2)要求能解释所用开发工具的数据库编程机制。(3)要求能够采用所学数据库基础知识,根据需求分析设计正确的E-R模型,关系模式集合,按照规范化设计理论进行数据库设计.(4)要求能够说明数据的流程和变换,能够解释全部程序。(5)要求能提供源程序清单(可以使用磁介质、U盘或纸介质)。(6)对超出题目要求者,可以
9、适当提高计分。2课程设计报告要求(1)要求提交课程设计报告,没有设计报告者,不计成绩。(2)课程设计报告要求字迹清晰、版面整齐,篇幅至少8页,纸张使用A4,也可使用同样大小的作业本。封面上要求有课程设计名称、班级、学号和姓名等必要信息,必须装订整齐.(3)报告应书写设计内容、设计方法、实现方法、算法说明、心得体会等内容,绝对不能写成源程序清单。(4)除了源程序清单和一些必须打印的图表以外,实习报告一律手写,否则不计成绩。第二部分 VC+6。0访问SQL SERVER数据库技术在之前的课程学习中,同学们已经有了C+面向对象程序设计的知识基础,在此,主要介绍采用VC+6。0与SQL Server2
10、000数据库相结合开发数据库应用程序的相关知识。希望通过两个星期的课程设计,采用同学们较为熟悉的语言,大家能够掌握好数据库开发的基本技术.这一部分主要涉及两个方面的内容: Ø 使用ADO访问数据库的相关知识Ø 通过5个例子介绍开发数据库应用程序的关键技术,包括数据查询、插入、更新和删除2.2 ADO访问数据库的相关知识2。1。1 VC+6。0集成开发环境及MFC编程简介VC+6.0是Microsoft公司开发的基于C/C+的、面向对象程序设计的集成开发工具.对于大型应用程序的开发,不管是从开发效率上还是从代码的可重用性、可扩充性、可维护性和可靠性方面看,C+语言都显示出强大
11、的优越性.在VC+6。0集成开发环境中,可以通过两种方式来编写Win32应用程序,一种方式是基于WindowsAPI的C编程方式,另一种是基于MFC的C+编程方式。一般来说,对中大型系统开发而言,通常使用后者来编写应用程序,这样可以提高工作效率,降低开发成本。MFC封装了Windows API,是一个面向对象的C+类库,包含大约200个类,其中一些可以直接被用户调用,另一些则主要作为用户定义的基类.因此,基于MFC的应用程序可以用少量的代码即可完成一些非常复杂的工作.MFC比较庞大和复杂,在此,主要简要介绍如何基于MFC进行数据库应用程序的开发。2.1。2 VC+中连接数据库的常用方法VC+提
12、供的访问数据库的技术有很多种,如ODBC(Open DataBase Connectivity)、OLE DB(Object Link and Embedding Database)、DAO(Data Access Object)、ADO(ActiveX Data Object)等。我们常用的有两种:通过ODBC连接和通过ADO连接.采用ODBC方式要求先创建ODBC数据源,应用程序通过数据源与数据库连接;并且在创建应用程序时,只能是基于单文档或多文档,而无法直接创建基于对话框的应用程序。采用ADO方式无需创建数据源,应用程序可通过ADO直接与数据库连接;ADO方式可以创建基于对话框的应用程序
13、.2.1。3 ADO方法ADO是微软推出的最新的数据库访问技术,是建立在OLE DB上的高层数据库访问技术。使用ADO访问数据库,主要是使用ADO的各种对象进行访问,它简单易用、速度快、内存支出少,其最大好处是在因特网上访问数据库的高效性。由于其功能强大,在开发数据库应用系统中使用最多。在这部分主要介绍ADO有关知识.在VC中使用ADO,开发基本流程如下:Ø 引入ADO库文件,初始化OLE/COM库环境Ø 用Connection对象连接数据库Ø 利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Record对象取得结果记录集进行查
14、询、处理.Ø 使用完毕后关闭连接释放对象。1、使用ADO连接数据库,需要做一些准备。(1)在头文件中引入ADO库文件(一般放在StdAfx.h中). import ”c:program filescommon filessystemadomsado15.dll” no_namespace rename("EOF” adoEOF") 这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免冲突,将ADO的EOF(文件结束)改名为adoEOF.(2)由于ADO库是一组COM动态库,程序在调用ADO前必须初始化COM环境(一般在应用程序主类的InitIns
15、tance成员函数里面初始化)。 相应代码如下:BOOL CSearchDataApp::InitInstance() AfxEnableControlContainer();CoInitialize(NULL);/初始化COM库 2、常用的ADO的对象 Connection、Command和Recordset是ADO中常用的三个对象。 在使用数据库时,首先会打开数据库,然后再对数据库中的某个数据表进行操作.Connection对象用来与数据库建立连接、执行查询以及进行事务处理,它管理应用程序和数据库之间的通信。Command可以执行数据库操作命令,被用来处理重复执行的查询,或处理需要检查在存
16、储过程调用中的输出或返回参数的值的查询。Recordset对象表示来自基本表或命令执行结果的记录集,它可以在结果集中添加、删除、修改和移动记录。在使用Connection、Recordset和Command之前,要创建它们的实例,比如:_ConnectionPtr m_pConnection; m_pConnection。CreateInstance(_uuidof(Connection);_RecordsetPtr m_pRecordset;m_pRecordset。CreateInstance(_uuidof(Recordset));3、打开数据与关闭数据连接声明一个Connection对
17、象实例后,就可以使用这个对象实例来连接数据库了。比如连接Sql Server的数据库student:m_pConnectionOpen(“driver=SQL Server;Server=20101019-1026;Database=Stu_course;UID=sa;PWD=123",”,"”,adModeUnknown);其中 “driver=SQL Server;Server=201010191026;Database= Stu_course;UID=sa;PWD=123"是连接字符串,分别表示OLE DB供应者,服务器名,数据库名,用户名和密码.如果使用w
18、indows身份验证方式登录,则用户名和密码为空;如果是使用windows和SQL Server混合验证,则UID=;PWD=要写入相应的用户名和密码。以上连接语句也可写成下面的形式:StrConn=“driver=SQL Server;Server=20101019-1026;Database=Stu_course;UID=sa;PWD=123”;m_pConnectionOpen(StrConn,"",”,adModeUnknown);关闭数据库连接:m_pConnection-Close();在上面连接数据库的语句中,StrConn是包含连接信息的字符串,无论连接什么
19、数据库,用下面的方法能很方便地获得它的值:(1)在任意一个Dialog资源中单击鼠标右键,在弹出的快捷菜单中选择“Insert ActiveX Control",在弹出的对话框中选中“Microsoft ADO Data Control 6.0”,单击确定,将Adodc添加到Dialog资源中.图2。1 插入Active X对话框(2)在刚插入的Adodc控件上单击鼠标右键,在弹出的快捷菜单上选择“ADODC属性Adodc Object”,弹出Adodc属性对话框。选择“General”选项卡,在该选项卡上可以通过三种方式连接数据库,其中常用的是后两项:通过ODBC和连接字符串连接数
20、据库。在此,我们选择后者,如图2。2所示:图2。2 Microsoft ADO Data Control Properties对话框(3)单击“生成”按钮,弹出“数据链接属性"对话框。根据要连接的数据库情况,选择适当的提供者,在此,选择“Microsoft OLE DB Provider For SQL SERVER”来连接SQL SERVER数据库。单击下一步进入“连接”属性页,在“选择或输入数据库名称”文本框中,填入要连接的SQL SERVER服务器名,在“输入登录服务器的信息"区域选择登录的验证模式,最后选择要连接到的数据库。如图2.3所示。图2.3 连接选项卡 (4
21、)关闭“数据连接属性”对话框,需要的字符串便显示在“Use Connection String”文本框中,如图2。4 所示。图2.4 自动生成的连接字符串4、如何执行SQL命令并取得结果记录集SQL命令的执行可以采用多种形式。(1) 利用Connection对象的Execute方法执行SQL命令m_pConnection -Execute(CommandText,RecordsAffected,Options);其中:参数CommandText是命令字串,通常是SQL命令. 参数RecordsAffected:可选,是操作完成后所影响的行数, 参数Options:可选
22、,表示CommandText中内容的类型,Options可以取如下值之一: adCmdText:表明CommandText是文本命令 adCmdTable:表明CommandText是一个表名 adCmdProc:表明CommandText是一个存储过程 adCmdUnknown:未知例如:/将所有记录old字段的值加一m_pRecordset = m_pConnection Execute(“UPDATE users SET old = old+1”, RecordsAffected, adCmdText);Execute执行完后返回一个指向记
23、录集的指针。(2) 直接用Recordset对象进行查询取得记录集例如 m_pRecordset>Open("SELECT * FROM student”, _variant_t(IDispatch )m_pConnection,true), /获取数据库的Idispatch指针 adOpenDynamic, /动态光标。所有数据库的操作都会立即在各用户记录集上反映出来。 adLockOptimistic, /乐观锁定方式.只有在你调用Update方法时才锁定记录。在此之前仍然可以做数据的更新、插入、删除等动作 ad
24、CmdText); / adCmdText:表明CommandText是文本命令(3) 利用Command对象来执行SQL命令 Command对象在进行存储过程的调用中能真正体现它的作用。2.3 ADO访问数据库的例子ADO在VC+中有不同的使用方法,比如,编写代码使用ADO库的三个智能指针(_ConnectionPtr、_RecordsetPtr、_CommandPtr)对数据库进行操作(很多参考书都有介绍)等;另外一种简单的方法是直接使用ADO控件.为了使大家能快速掌握VC环境下通过ADO技术访问数据库的关键技术,下面通过5个例子,分别介绍如何通过ADO控件来连接SQL SERVER数据库
25、,对数据库中数据进行查询、添加、更新、删除以及多表联接查询的方法.掌握了对数据增删改查的基本方法,也就掌握了开发数据库应用系统关键内容。2。2.1 数据库及数据库表的建立本节将要介绍的例子,用到了以下3个数据表。表结构如下:表1学生基本情况表student字段名字段类型字段含义说明s _novarchar(8)学号s _namevarchar(8)学生姓名s _sexvarchar(4)性别s _ageint(4)年龄s_deptvarchar(20)专业s_addressvarchar(50)住址表2 课程表course字段名字段类型字段含义说明c_novarchar(8)课程号c_name
26、varchar(20)课程名称c_hourint(4)课时c_scorenumeric(2,1)学分表3 选修课程情况表score字段名字段类型字段含义说明c_novarchar(8)课程号s_novarchar(8)学号scoreInt(4)成绩创建student表的SQL脚本student.sql如下:使用Stu_course数据库use Stu_Coursegocreate table student(s_no varchar(8) primary key,s_name varchar(8) not null,s_sex varchar(4),s_age int,s_dept varch
27、ar(20),s_address varchar(50);-添加数据到student表中INSERT INTO student VALUES(1','李平,男, 22, '计算机应用技术', '湖南')INSERT INTO student VALUES(2,王丫','女', 19, '信息安全, '广西')INSERT INTO student VALUES(3,钟信',男', 21, '网络工程', '重庆')INSERT INTO student
28、 VALUES(4,'木林,'女', 20, '信息安全', 北京)INSERT INTO student VALUES(5',李文,男, 20, 计算机应用技术, 上海')INSERT INTO student VALUES(6',丽思,'女, 18, '网络工程,大连')创建course表的SQL脚本course.sql如下:-建立course表create table course(c_no varchar(8) primary key,c_name varchar(20) not null,c_ho
29、ur int,c_score numeric(2,1));-添加数据到course表中INSERT INTO course VALUES(1,数据结构,56,2。5)INSERT INTO course VALUES(2',大学英语,32,2)INSERT INTO course VALUES(3',高等数学,56,5)INSERT INTO course VALUES('4,'数据库系统',48,2。5)创建score表的SQL脚本score。sql如下:-建立score表create table score(c_no varchar(8),s_no
30、varchar(8),score int,primary key(c_no,s_no),foreign key(c_no) references course(c_no),foreign key(s_no) references student(s_no);-添加数据到score表中INSERT INTO score VALUES('1,1',80)INSERT INTO score VALUES('1','2',89)INSERT INTO score VALUES('1,'4',90)INSERT INTO score
31、 VALUES('2,'1,85)Stu_course数据库的创建步骤如下:l 通过Service Manger启动MS SQL Server2000.l 打开企业管理器工具,连接到启动的数据库服务器。在“数据库”菜单上单击鼠标右键,选择“新建数据库"菜单新建一个数据库Stu_course,如图2.5所示。图2.5 选择新建数据库菜单l 打开查询分析器,分别执行脚本文件student。sql、course.sql和score.sql来创建3个表,如图2.6所示。图2.6 执行student.sql脚本2.2.2查询数据使用SELECT数据查询一般是指根据给定的条件在数
32、据库中检索满足要求的数据。在不同的实际应用中,查询条件和要求会有很大的差别.下面的例子从创建VC工程开始,详细介绍如何利用ADO控件连接数据库,实现一个能按属性值查询数据的基本对话框界面的过程。【例1】创建一个能按照给定的字段值查询数据的MFC程序。程序功能是,可以选择指定范围内的表,然后选择表中任意一个字段,根据给出的该字段的值,在表中查询满足要求的数据。操作步骤如下:(1)创建VC应用程序打开VC+6。0,新建工程。选择MFC AppWizard(exe),工程名为SearchData。在弹出的窗口中选择“基本对话框”,以后的步骤没有需要修改的地方,可以直接点击“完成。”这样一个基于基本对
33、话框的工程就创建好了。按照前面讲的方法,添加import语句、初始化COM环境。(2)在控制面板中添加ADO控件和DataGrid控件。通过ADO控件来连接SQL Server数据库,一般需要两个控件:ADO控件和DataGrid控件。在默认情况下,VC+6。0的控制面板中并没有这两个控件,可按下面的方法添加它们:在VC+6.0的菜单中,选择“Project"|“Add To Project”|“Component and Controls”命令,在打开的“Components and Controls Gallery”对话框中,选中Registered ActiveX Contro
34、ls文件夹,将“Microsoft ADO Data Control,version6.0(OLEDB)”项和“Microsoft DataGrid Control,Version 6。0(OLEDB)"分别添加进来即可。单击“Insert”按钮,会把ADO控件的类文件导入到当前工程之中。此时VC+6.0的控件面板上就多了两个浅绿色的控件。ADO控件DataGrid控件图2.7 VC+6.0控件面板(添加控件后)(3)界面设计在工作区左边的树型结构中,选择ResourceView,展开Dialog节点,双击IDD_SEARCHDATA_DIALOG,打开该对话框,在该对话框上添加Da
35、taGrid控件、ADO控件、Edit控件和Button控件各一个,Combo控件2个,Static控件3个。对各个控件进行适当调整,结果如图2。8所示。图2.8 主对话框设计界面(4) 设置DataGrid控件的属性。DataGrid控件用于显示数据,需将数据源属性(DataSource属性)的值设置为ADO控件的ID属性值IDC_ADODC1。方法是:右击DataGrid控件,选择“Properties”,在弹出的属性对话框中选择“All"选项卡,然后在该选项中将“DataSource”项的值设置为IDC_ADODC1,其中IDCADODC1为ADO控件的ID属性值。此外,还将“
36、Caption”属性设置为“查询结果”,如图2。9所示。图2.9 设置DataGrid控件的属性(5)连接数据库。主要是对ADO控件的相关属性进行设置。可按以下几个步骤进行: 在主对话框上右击ADO控件,在弹出的菜单中选择“Properties”命令,会弹出如前面图2。2所示的对话框,按照图2.3中讲过的方法设置好数据库的连接信息,包括服务器名,登录服务器的验证方式(根据自己的服务器设置),要访问的数据库(选择Stu_Course)。测试连接成功后,点击确定。回到刚才的属性对话框,选择“Authentication”选项卡,输入与在“连接”选项卡设置的相同的用户名和密码,如图2.10所示.注意
37、,如果在“连接”选项卡中设置的“用户/密码"方式登录,则必须在该选项卡重新设置同样的用户名和密码。图2.10 设置的用户名和密码选择“RecordSource”选项卡,在“CommandType”下拉列表框中选择“adCmdText”项,表示要通过在下面的“CommandText”文本框中输入语句“SELECTFROM student”来查询数据,如图2。11所示。图2。11 将CommandType设置为adComText至此,DataGrid控件与ADO控件联系起来,在DataGrid里将显示student表里的内容。如果将CommandType设置为adCmdTable则需要在
38、Table or Stored Procedure Name下拉框中选择表名,如student,表示将查询该表中的数据。为了让ADO控件在运行时不可见,可在“常规”选项卡,去掉“Visible”复选框中的勾。(6)对ADO、Combo、Edit控件建立关联变量.以Combo1控件为例,创建关联变量的过程是:在界面右键单击,选择“ClassWizard"(建立类向导),打开“MFC ClassWizard”对话框。在此对话框上选择“MemberVariables"选项卡,然后在“Control IDs”列表框中选择“IDC_COMBO1”项,接着单击右上角“Add Varia
39、ble”选项卡,弹出图2.12所示对话框。在此框中设置变量的名称、变量的类别(Category)。图2。12 设置combo1控件的关联变量用同样的方法对其他控件创建关联变量,添加变量完成后的类向导如图2.13所示。图2.13控件及其关联变量(7)为Button1控件建立关联成员函数.方法是:选择“View”“ClassWizard”命令,打开“MFC ClassWizard"对话框.选择“Messages Maps"选项卡,然后在“Object IDs"列表框中选择“IDC_BUTTON1”项,在“Messages"列表框中选择“BN_CLICKED&
40、quot;项,如图2.14所示。最后单击右上角的“Add Function”按钮,在弹出的对话框中设置成员函数的名称OnButton1,并单击“OK”按钮。该函数与Button1按钮关联,在程序运行时,单击此按钮实际上就是执行此成员函数.图2。14 创建Button1控件的关联函数在图2.14中,单击“Edit Code"按钮,编辑函数OnButton1的代码,结果如下:void CSearchDataDlg::OnButton1() / TODO: Add your control notification handler code here UpdateData(TRUE);CS
41、tring tmpStr, strSQL = "SELECT FROM "; m_combo1_TableName.GetWindowText(tmpStr); strSQL += tmpStr+” WHERE ”; m_combo2_FieldName.GetWindowText(tmpStr); strSQL += tmpStr+" = ";strSQL += "'"+m_Edit1_FieldValue+""; m_Adodc1.SetRecordSource(strSQL); m_Adodc1。Re
42、fresh();UpdateData(FALSE);(8)再用类似的方法对Combo1控件建立名为OnKillfocusCombo1的关联函数。代码如下:void CSearchDataDlg:OnKillfocusCombo1() / TODO: Add your control notification handler code hereCString tableName;m_combo1_TableName。GetWindowText(tableName);m_combo2_FieldName。ResetContent(); if(tableName="student"
43、;)m_combo2_FieldName。AddString("s_no”); m_combo2_FieldName.AddString(”s_name”); m_combo2_FieldName。AddString("s_sex");else m_combo2_FieldName.AddString(”c_no"); m_combo2_FieldName。AddString(”c_name"); (9)打开SearchDataDlg.cpp文件,在CSearchDataDlg:OnInitDialog()函数中添加下列语句:/ TODO: A
44、dd extra initialization herem_combo1_TableName.SetWindowText("student”);m_combo2_FieldName。SetWindowText("s_name”);m_combo1_TableName.AddString(”student");m_combo1_TableName.AddString("course”); m_combo2_FieldName.AddString(”s_no"); m_combo2_FieldName。AddString(”s_name"
45、); m_combo2_FieldName。AddString(”s_sex");这些语句用于初始化Combo1和Combo2控件。(10)经过上述操作以后运行此工程,结果如图2.15所示。在该界面中,可以按单个字段值对表student和表course进行查询。图2.15 工程SearchData的运行界面2.2.3 插入数据-使用INSERT插入数据是通过执行INSERT语句来实现的。以下介绍如何在VC代码中执行INSERT语句,以完成数据插入操作。【例2】创建一个MFC程序,使其具有插入数据的功能。程序的功能为:通过VC主对话框实现向表student表插入数据的功能。此程序创建步
46、骤如下:(1)创建一个MFC程序,工程名为InsertData。按前面介绍的方法,在主对话框上添加DataGrid控件和ADO控件,并进行相应的属性设置,它们用于显示当前数据表中的数据。然后,分别添加6个Edit控件,连同ADO控件一起,分别为它们创建关联变量,结果如图2.16所示.图2.16 创建的关联变量(2)为Button1按钮创建关联成员函数OnButton1(),并对其编辑代码,结果如下:void CInsertDataDlg::OnButton1() / TODO: Add your control notification handler code hereUpdateData(
47、TRUE);_ConnectionPtr m_pConnection; :CoInitialize(NULL);/在ADO操作中建议语句中要常用trycatch()来捕获错误信息/因为它有时会经常出现一些想不到的错误try m_pConnection。CreateInstance("ADODB.Connection”);_bstr_t strConn="Provider=SQLOLEDB;Server=201010191026;DATABASE=Stu_Course;UID=sa;PWD=;”;m_pConnection>Open(strConn,"”,”&
48、quot;,adModeUnknown); /if(m_pConnection-State = adStateOpen) MessageBox("成功连接数据库”);catch (_com_error e):CoUninitialize(); AfxMessageBox(e。ErrorMessage();return; /以下插入数据_variant_t ra; _bstr_t strAdd = ”INSERT INTO student VALUES(”;strAdd = strAdd + m_s_no + ”','”;strAdd = strAdd + m_s_na
49、me + ","strAdd = strAdd + m_s_sex + "',"strAdd = strAdd + m_s_age + ",'”;strAdd = strAdd + m_s_dept + ”,”;strAdd = strAdd + m_s_address + "')"; m_pConnectionExecute(strAdd,ra,adCmdText); m_pConnectionClose(); / 以下显示当前数据m_adodc1.SetRecordSource(”SELECT F
50、ROM student"); m_adodc1。Refresh();UpdateData(FALSE);(3)经过上述步骤,已经完成代码编写任务.然后运行该工程,在文本框中输入相应的值,然后单击“插入”按钮即可将数据插入到数据表student中,如图2.17所示。图2。17 工程InsertData的运行界面2.2。4 更新数据-使用UPDATE更新数据是通过执行UPDATE语句来实现.与例2一样,在VC中执行UPDATE语句也可以通过调用ADO对象的Open方法来实现。【例3】创建一个MFC程序,使其具有更新数据的功能.为了节省篇幅,在工程InsertData(例2)的基础上来创建
51、这样的MFC程序。方法是:将InsertData目录复制一份,并将复制后的目录名改为InsertData2,然后双击此目录下的InertData。dsw文件,打开文件InsertData。按照下列步骤进行补充:(1)打开“MFC ClassWizard"对话框,为DataGrid控件添加成员函数OnDblclickDatagrid()并在该函数中添加代码,结果如下:void CInsertDataDlg:OnDblClickDatagrid1() / TODO: Add your control notification handler code hereUpdateData(TRU
52、E); int ColNum = 2; CString colVal; CColumns cols; /要包含头文件"Columns.h" CColumn col; /要包含头文件”Column。h" VARIANT v_ColNum,v_Value; cols = m_datagrid1.GetColumns();/调用GetColumns返回CDataGrid对应的CColumns对象 v_ColNum。vt = VT_I2; /读取学号 v_ColNum。iVal = 0; /设置列编号 col = cols.GetItem(v_ColNum); /根据列编
53、号返回CColumn对象 v_Value = col.GetValue(); /读取列值 m_s_no = v_Value.bstrVal; /读取姓名v_ColNum.iVal = 1; col = cols.GetItem(v_ColNum); v_Value = col.GetValue(); m_s_name = v_Value.bstrVal; /读取性别v_ColNum。iVal = 2; col = cols。GetItem(v_ColNum); v_Value = col.GetValue(); m_s_sex = v_Value。bstrVal; /读取年龄v_ColNum.
54、iVal = 3; col = cols。GetItem(v_ColNum); v_Value = col。GetValue(); m_s_age = v_Value。bstrVal; /读取专业v_ColNum.iVal = 4; col = cols。GetItem(v_ColNum); v_Value = col。GetValue(); m_s_dept = v_Value。bstrVal; /读取住址v_ColNum.iVal = 5; col = cols。GetItem(v_ColNum); v_Value = col.GetValue(); m_s_address = v_Value.bstrVal; UpdateData(FALSE);该函数的作用是,每次双击DataGrid控件中编辑单元时就会执行该函数,结果是将DataGrid控件的当前行中的所有字段值依次复制到界面下方的六个文本框中。代码中用到了m_datagrid1,因此还要按照前面的方法,为DataGrid控件创建一个关联变量m_datagrid1,否则运行时会提示找不到变量。(2)将Button1控件的Caption属性改为“更新",然后修改对应的成员函数的代码,结果如下:void CInsertDataDlg:OnButt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学美术学科培训
- ICU护理学习文献汇报
- 电梯安全知识教育
- 建筑企业质量安全月培训
- 海关监管体系课件
- 个人舞蹈教室租赁合同模板
- 罐头食品HACCP体系评估与优化合同
- 企业股权收购撤销及利益分配合同
- 餐饮行业食品安全事故处理协议
- 知名餐饮品牌总经理任职及品牌推广合同
- 紫铜材质证明
- 新产品评审管理办法
- (参考)菲达公司国内电除尘器业绩表
- 游泳池水质检测记录表
- 大学生职业生涯规划与就业指导教案第5讲:兴趣探索
- 门店电表记录表
- 七年级劳技 花卉种植 花卉用途 PPT学习教案
- 隧道换拱专项施工方案
- 国际金融托马斯普格尔复习资料整理
- 基于单片机的报警器与旋转灯设计(共21页)
- 中国农业银行房地产押品价值评估操作模板
评论
0/150
提交评论