实验15简单数据库的应用程序开发_第1页
实验15简单数据库的应用程序开发_第2页
实验15简单数据库的应用程序开发_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验 15 简单数据库应用程序开发一、目的与要求 :1) 了解实际数据库应用系统的开发过程;2) 掌握 ODB (数据源的建立方法;3) 掌握在不同开发工具中使用 ODBC 或 ADO 等技术连接数据库的根本方法;4) 初步掌握数据库应用程序的根本方法;5) 开发一个简单的数据库应用程序。二、背景知识用户与 DBMS 交互,一种方式是直接借助 DBMS 系统,采用 SQL 命令进行,另一种 方式是用 户通过数据库应用程序与 DBMS 交互,对非计算机专业用户来说,这是最简单的 方式。数据库应用程 序通过一定方式与数据库建立连接,然后与DBMS 建立交互。数据库应用程序的开发是信息系统建设的重要

2、组成局部。数据库应用程序与 DBMS 可以通过一系列的应用程序接口(Application ProgrammingIn terface, API) 进行通信,通过 API 调用传递 SQL 语句给 DBMS ,并使用 API 调用检索结果。 常用的 数据库应用编程接口有ODBC 、 JDBC 、ADO 、 ADO.NET 和 OLE DB 等。目前数据库应用系统开发中通常使用两种体系结构即客户机/效劳器 ( Client/Server,C/S)结构和浏览器/效劳器(Browser/Server, B/S )结构。C/S 结构的效劳器上安装数据库及数据库管理系统,用于执行DBMS 功能,称为数据

3、库效劳器;而客户机那么安装 DBMS 的外围应用开发工具即客户端应用程序,支持用户的应 用,称为客 户机。一般系统由一台数据库效劳器和多台客户机组成。B/S 结构是随着数据库应用系统规模的扩大和 Internet 的迅速普及而产生的体系结构,在 B/S 结构中,客户机上只要安装浏览器如 In ternet ExplORer 或 Netscape NavigatOR ,数据 库效劳 器上安装 DBMS 和数据库,用户界面完全通过 WWW 浏览器实现,应用逻辑在 Web 效劳器端实现。 浏览器通过 Web 效劳器同数据库进行数据交互。数据库应用系统的体系结构不同, 其开发工具也有所不同。 目前比拟

4、主流的 C/S 结构前 端开发工具有 Delphi 、Visual Basic 、Visual Basic.NET 、Visual C+ 、JAVA 和 PowerBuilder 等。 而B/S结构的开发工具有 ASP、ASP.NET、JSP和PHP等。在开发工具中通常可以通 过API如ODBC、 JDBC、 ADO 、 ADO.NET 和 OLE DB 等接口建立与后台数据库的连接。三、实验内容 开发一个简单的数据库应用系统,针对 EDUC 数据库,开发其简单的应用程序界面, 能够对其中 的表数据进行操作。系统采用 C/S 体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库效劳器

5、,自选一种开发工具(Visual C+,Visual Basic 或Delphi);服务器端那么用于提供数据效劳,采用 SQL Server2005 作为数据库管理系统。四、实验步骤选择的开发工具不同, 应用程序与数据库的连接方式及应用程序的编写方式就不同,面列举在Visual C+工具下简单应用界面的设计方法。1. 建立ODBC数据源在介绍具体方案之前,先为EDUC数据库建立 ODBC数据源。方法如下:(1 )在Windows XP中选择“开始| “控制面板 | “管理工具命令,出现如图15-1幕gy悴功itw ±3rrt 甘 WarTttSTliJ 論严唤 迅IEIWILDS J

6、Ebid褪郎fFF其L乩 rMr 軍 L inmr 泳 Swmr所示的“管理工具窗口15-1“管理工具窗口图15-2 “系统DSN选项卡窗Sfrtt.) ekd HI£ftKu'i T*iti4i 羽IMffrtnrr儡)双击“ ODBCH数据源,翻开“ ODBC数据源管理器对话框;选择“系统 DSN 博n雷存,2IH "'选项卡,如图15-2所示。略云他o(3) 单击“添加按钮,出现如图 15-3所示的对话框;选择 SQL Server选项,单击“完 成2 n-按钮。(4)出现“创立到SQL Server的新数据源对话框,如图15-4所示;在“名称文本框审

7、5E I 1?疳碾9J中输入XSGL,单击“下一步按钮。图15遶誓去却力旦建新数据源進欣寸话框源对话框图15-比于淫粧岳沁晦建到SQL Server的新数据S.rAr 的 CK融劳璟?(5)出现连连接TtSQLSever认证的输入框,选择“使用用户输入登录ID和密码的SQLHi croa,a £CDE £for Ob' irlvHjT v udn DE LVRX* t*. -lb *Server验证单项选择按钮,在(*:»: J ID 文本框中输入sa,在“密码文本框中输入效劳器登录密码,Twt-Tr+ibHr (* tit: +.civ) icrAiAf

8、 t FiFiQ 內单击“下一步按钮,他进入选择数据库的对话框。SftLIkLLT* Cliw.L(6 )选中“更改默认的数据库为复选框,从其下方的下拉列表框中选择数据库为XSGL,不更改其他默认设置。 设置完毕后,单击“下一步按钮,进入设置ODBC对话框, 如图15-5所示。保持默认选项,单击“完成按钮,7出现 ODBC 配置确实认对话框,如图 15-6 所示。单击“测试数据源按钮,即SQL SrTttr宣建tiff日函灵“仃的片數r总TFT冷巔廿亠.理豹旷KK护的Ilk n-*icft Sul:IFT ik JiWffM 03 昨 II IT5IfHU賣 ffVOI4確识a ?;了Jt4F

9、泓就齋吉1±崔*驴UFJi-.«r吐oflatf®2-"占谆WIIII护话曲贰円审厲血JCKrj 占涔;味S*-孕叮Mro rrN 曹缶剂 nln-Ibrf'-M-e任咗图15-6 ODBC配置确认对话框选择应用程序开发工具,然后实现I 上; wl <fa Ieduc已经建成。图15-5 “创立到SQL Server的新数据源对话框2. 建立数据库应用程序数据源建立后,可进行简单数据库应用程序的编写如下功能:1 系统欢送界面;2登录界面; 3 应用程序主界面菜单、工具栏等;4应用程序的其它界面如数据维护、数据查询、数据统计等;5报表设计;对

10、于数据访问界面,一般的步骤如下:1建立工程工程;2界面窗口设计;添加数据库连接控件。3添加数据显示控件。4修改控件属性,把控件和数据库绑定。5利用控件直接操作数据库。6退出宿主语言后,在 DBMS环境下观察数据库的变化。7在开发工具编程环境下为事件增加程序代码,实现对数据库的操纵。具体方法请参阅相关开发工具的参考书。下面分别介绍几种不同开发工具下与数据库连接的方法和简单应用程序界面设计的根本方法。包括增加新的记录、删除记录、修改记录。方案一:采用Visual C+作为前端开发工具在VC下开发基于ADO的数据库要稍微复杂一些,本次开发基于c/s体系结构的学生选课管理系统,采用三层模式进行开发。即

11、数据层,业务层,界面层。下面关于开发的一些基本步骤作一个简单介绍:(1)导入 ADO 动态链接库 msado15.dll 到“ StdAfx.h 文件中,以便工程编译完 后,自动生 成对 ADO 对象的封装:添加步骤:(I ) 根据安装系统盘的路径,查找至 U c:program files'common filessystemadomsado15.dll 文 件(H)在“ StdAfx.h 文件中,添加一条语句:#impORt "c:program filescommon filessystemadomsado15.dll" no_namespace rename

12、("EOF","adoEOF")说明:(A) 重命名 EOF 是必要的,因为典型的VC 应用都已经定义了 EOF 作为常数 1。(B) ADO 类的定义是作为一种资源存储在ADO DLL(msado15.dll )中,在其内部称为类型库。类型库描述了自治接口,以及C+使用的COM vtable接口。当使用# impORt指令时,在运行时 Visual C + +需要从ADO DLL中读取这个类型库,并以此创立一组C+头文件。这些头文件具有.tli和.tlh扩展名,读者可以在工程的DEBUG目录下找到这两个文件。在 C +程序代码中调用的ADO 类要在这些

13、文件中定义。(2)建立数据层类,实现与数据库的连接、数据插入、删除、查询、数据更新操作。class ADOConnpublic:_ConnectionPtr m_pConnection; / 添加一个指向 Connection 对象的指针_RecORdsetPtr m_pRecORdset; / 添加一个指向 RecORdset 对象的指针/ 定义各种方法,实现数据库的连接,数据的查询,数据的增删改ADOConn();virtual ADOConn();void OnInitADOConn(); / 初始化连接_RecORdsetPtr& GetRecORdSet(_bstr_t bs

14、trSQL); /执行查询BOOL ExecuteSQL(_bstr_t bstrSQL); / 执行增删改 SQL 语句, Insert Update _variant_t voidExitConnect();/退出数据库连接;ADOConn:ADOConn()ADOConn:ADOConn()/ 初始化数据库连接方法void ADOConn:OnInitADOConn()/ 初始化 OLE/COM 库环境 , 由于 ADO 库是一组 COM 动态库,应用程序在调用 ADO 前,必 须先初始化 OLE/COM 库环境,以便使调用 COM 的 API 工作正常。:CoInitialize(NU

15、LL);try m_pConnection.CreateInstance("ADODB.Connection"); /创立 Connection 对象/ 设置连接字符串,提供 DBMS 名称,数据库效劳器所在位置,数据库的名称, 用户名, 口令_bstr_t strConnect = "driver=SQL Server; Server=; DATABASE=XSGL; UID=sa;PWD= ;"m_pConnection->Open(strConnect,"","",adModeUnkn

16、own);/ 捕捉异常 catch(_com_errOR e) AfxMessageBox(e.Description(); / 对数据库执行查询的方法_RecORdsetPtr& ADOConn:GetRecORdSet(_bstr_t bstrSQL) /将查询表达式作为参数 传递 try/ 连接数据库,如果 Connection 对象为空,那么重新连接数据库 if(m_pConnection=NULL) OnInitADOConn();/ 创立记录集对象 m_pRecORdset.CreateInstance("ADODB.RecORdset");/ 取得表中

17、的记录 m_pRecORdset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockO ptimistic,adCmdText);/ 捕捉异常 catch(_com_errOR e) AfxMessageBox(e.Description(); / 返回记录集指针return m_pRecORdset;/ 对数据库执行插入、删除、数据更新操作SQL 命令的方法BOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL) /将 SQL 命令作为参数传递try if(m_pConnectio

18、n = NULL)OnInitADOConn(); m_pConnection->Execute(bstrSQL,NULL,adCmdText); return true; catch(_com_errOR e)AfxMessageBox(e.Description(); return false;void ADOConn:ExitConnect()/ 关闭记录集和连接if (m_pRecORdset != NULL)m_pRecORdset->Close();m_pConnection->Close();/ 释放环境:CoUninitialize();(3) 建立业务层:在

19、 XSGL 信息系统中,学生表有插入、删除、数据更新这样的业务需求,因此,对数据 库中的课 程表建立一个课程业务类, 封装相应的方法,以保证数据能够正确操作。 同样,课 程表与选课表也 有类似的业务需求,也需要建立相应的业务类。class coursepublic:CString cno,cname,tname,room; / 对应表中的字段int credit; / 对应表中的字段course();virtual course();void sql_insert();void sql_delete(CString icno);void sql_update(CString icno);/ 按

20、课程编号,判断是否存在相同纪录int havecno(CString icno);#include "ADOConn.h"course:course() course:course() /课程业务类插入数据的接口,在此接口中,调用数据层类,将数据插入到数据库中void course:sql_insert()ADOConn adoconn;adoconn.OnInitADOConn();_bstr_t sqltemp;CString tempcredit; /_bstr_t 中只支持字符串的相加操作,所以必须把数值转换成字符串tempcredit.FORmat("%

21、f", credit );sqltemp="insert into course values('"+cno+"','"+cname+"','"+tname+ "',"+ tempcredit +",'"+ room +"')"adoconn.ExecuteSQL(sqltemp); adoconn.ExitConnect();/课程业务类删除数据的接口,在此接口中,调用数据层类,将数据从数据库中删除v

22、oid course:sql_delete(CString icno)ADOConn adoconn;adoconn.OnInitADOConn();_bstr_t sqltemp;sqltemp="delete from course where cno='"+icno+"'"adoc onn .ExecuteSQL(sqltemp);adoc onn .ExitC onn ect();/课程业务类更新数据的接口,在此接口中,调用数据层类,更新数据库中的数据void course:sql_update(CStri ng icno)ADO

23、C onn adoc onn;adoc onn.Onlni tADOCo nn();_bstr_t sqltemp;sqltemp="update course set cn ame='"+c name+"',t name='"+t name+"' where eno='"+icno+"'"adoc onn .ExecuteSQL(sqltemp);adoc onn .ExitC onn ect();/按课程编号,判断是否存在相同纪录int course:havec

24、no (CStri ng icno)/根据当前用户输入的课程号,判断能否插入当前记录;如果存在,重新输入,否那么插入ADOC onn adoc onn;_bstr_t sql;sql="select * from course where eno='"+icno+"'"_RecORdsetPtr m_precORdset; m_precORdset=adoco nn .GetRecORdSet(sql); if(m_precORdset->adoEOF)return -1;elsereturn 1;adoc onn .ExitC o

25、nn ect();(4 )建立表示层: 针对业务需求,建立相应的窗体,如:课程(学生、选课)输入、修改、删 除窗体,这 类窗体和数据库的数据传递,通过相应的业务类实现,所有信息的查询窗体,可以通 过DataGrid控件较轻松地实现。(I)添加课程记录界面的实现图15-22添加课程纪录界面in terface_course 中,添加如下所示的成员变量(A )首先建立如图15-22所示的对话窗(B)在与对话窗对应的类CStri ng m_cno;CStri ng m_c n ame;CStri ng m_cteacher;int m_credit;CStri ng m_room;在插入控件响应函数

26、中,添加如下的代码: void in terface_course:O nln sert()UpdateData(1); 获得用户界面输入的信息 course temp;/定义课程类的对象if(m_c no="")MessageBox(" 课程编号不能为空 "); return;if(m_c name= " “)MessageBox(" 课程名不能为空 ;) return;if(m_cteacher="")MessageBox(" 任课教师不能为空 "); return;if(m_credit=

27、0)MessageBox(" 学分不能为空 ;)return;if(m_credit>5 && m_credit<0)return;MessageBox(" 学分必须在 0.5-5 的范围内 ;) if(m_room="")MessageBox(" 教室不能为空 ;) return; if(temp.havecno(m_cno)=1)MessageBox(" 该课程编号已存在 ;) return;temp.c no=m_cno;temp.c name=m_c name;temp.credit=m_credit;temp.t n ame=m_cteacher;temp.room=m_room;temp.sqlnsert();II调用课程类对象的插入函数,将表示层数据传送到数据库中if(temp.havec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论