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

下载本文档

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

文档简介

实验15 简单数据库应用程序开发一、目的与要求:1) 了解实际数据库应用系统的开发过程;2) 掌握ODBC数据源的建立方法;3) 掌握在不同开发工具中使用ODBC或ADO等技术连接数据库的基本方法;4) 初步掌握数据库应用程序的基本方法;5) 开发一个简单的数据库应用程序。二、背景知识用户与DBMS交互,一种方式是直接借助DBMS系统,采用SQL命令进行,另一种方式是用户通过数据库应用程序与DBMS交互,对非计算机专业用户来说,这是最简单的方式。数据库应用程序通过一定方式与数据库建立连接,然后与DBMS建立交互。数据库应用程序的开发是信息系统建设的重要组成部分。数据库应用程序与DBMS可以通过一系列的应用程序接口 (Application Programming Interface, API)进行通信,通过API调用传递SQL语句给DBMS,并使用API调用检索结果。常用的数据库应用编程接口有ODBC、JDBC、ADO、ADO.NET和OLE DB等。目前数据库应用系统开发中通常使用两种体系结构即客户机/服务器(Client/Server, C/S)结构和浏览器/服务器(Browser/Server, B/S)结构。C/S结构的服务器上安装数据库及数据库管理系统,用于执行DBMS功能,称为数据库服务器;而客户机则安装DBMS的外围应用开发工具即客户端应用程序,支持用户的应用,称为客户机。一般系统由一台数据库服务器和多台客户机组成。B/S结构是随着数据库应用系统规模的扩大和Internet的迅速普及而产生的体系结构,在B/S结构中,客户机上只要安装浏览器如Internet ExplORer或Netscape NavigatOR,数据库服务器上安装DBMS和数据库,用户界面完全通过WWW浏览器实现,应用逻辑在Web服务器端实现。浏览器通过Web服务器同数据库进行数据交互。数据库应用系统的体系结构不同,其开发工具也有所不同。目前比较主流的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体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,自选一种开发工具(Visual C+,Visual Basic或Delphi);服务器端则用于提供数据服务,采用SQL Server2005作为数据库管理系统。四、实验步骤选择的开发工具不同,应用程序与数据库的连接方式及应用程序的编写方式就不同,下面列举在Visual C+工具下简单应用界面的设计方法。1. 建立ODBC数据源在介绍具体方案之前,先为EDUC数据库建立ODBC数据源。方法如下:(1)在Windows XP中选择“开始”|“控制面板”|“管理工具”命令,出现如图15-1所示的“管理工具”窗口。 图15-1 “管理工具”窗口 图15-2 “系统DSN”选项卡窗口(2)双击“ODBC数据源”,打开“ODBC数据源管理器”对话框;选择“系统DSN”选项卡,如图15-2所示。(3)单击“添加”按钮,出现如图15-3所示的对话框;选择SQL Server选项,单击“完成”按钮。(4)出现“创建到SQL Server的新数据源”对话框,如图15-4所示;在“名称”文本框中输入XSGL,单击“下一步”按钮。 图15-3 “创建新数据源”对话框 图15-4 “创建到SQL Server的新数据源”对话框(5)出现连接SQL Server认证的输入框,选择“使用用户输入登录ID和密码的SQL Server验证”单选按钮,在“登录ID”文本框中输入sa,在“密码”文本框中输入服务器登录密码,单击“下一步”按钮,进入选择数据库的对话框。(6)选中“更改默认的数据库为”复选框,从其下方的下拉列表框中选择数据库为XSGL,不更改其他默认设置。设置完毕后,单击“下一步”按钮,进入设置ODBC对话框,如图15-5所示。保持默认选项,单击“完成”按钮,(7)出现ODBC配置的确认对话框,如图15-6所示。单击“测试数据源”按钮,即弹出一个关于测试结果对话框,单击“确定”按钮。如果测试成功,则表示ODBC数据源educ已经建成。 图15-5 “创建到SQL Server的新数据源”对话框 图15-6 ODBC 配置确认对话框2. 建立数据库应用程序数据源建立后,可进行简单数据库应用程序的编写。选择应用程序开发工具,然后实现如下功能:(1)系统欢迎界面;(2)登录界面;(3)应用程序主界面(菜单、工具栏等);(4)应用程序的其它界面如数据维护、数据查询、数据统计等;(5)报表设计;.对于数据访问界面,一般的步骤如下:(1) 建立工程项目;(2) 界面窗口设计;添加数据库连接控件。(3) 添加数据显示控件。(4) 修改控件属性,把控件和数据库绑定。(5) 利用控件直接操作数据库。(6) 退出宿主语言后,在DBMS环境下观察数据库的变化。(7) 在开发工具编程环境下为事件增加程序代码,实现对数据库的操纵。具体方法请参阅相关开发工具的参考书。下面分别介绍几种不同开发工具下与数据库连接的方法和简单应用程序界面设计的基本方法。包括增加新的记录、删除记录、修改记录。方案一:采用Visual C+作为前端开发工具在VC下开发基于ADO的数据库要稍微复杂一些,本次开发基于c/s体系结构的学生选课管理系统,采用三层模式进行开发。即数据层,业务层,界面层。下面关于开发的一些基本步骤作一个简单介绍:(1) 导入ADO动态链接库msado15.dll到“StdAfx.h”文件中,以便工程编译完后,自动生成对ADO对象的封装:添加步骤:()根据安装系统盘的路径,查找到c:program filescommon filessystemadomsado15.dll文件()在“StdAfx.h”文件中,添加一条语句:#impORt c:program filescommon filessystemadomsado15.dll no_namespace rename(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类要在这些文件中定义。 (2)建立数据层类,实现与数据库的连接、数据插入、删除、查询、数据更新操作。class ADOConn public:_ConnectionPtr m_pConnection; /添加一个指向Connection对象的指针_RecORdsetPtr m_pRecORdset; /添加一个指向RecORdset对象的指针/ 定义各种方法,实现数据库的连接,数据的查询,数据的增删改ADOConn();virtual ADOConn();void OnInitADOConn(); / 初始化连接_RecORdsetPtr& GetRecORdSet(_bstr_t bstrSQL); / 执行查询BOOL ExecuteSQL(_bstr_t bstrSQL); / 执行增删改SQL语句,Insert Update _variant_tvoid ExitConnect(); /退出数据库连接;ADOConn:ADOConn()ADOConn:ADOConn()/ 初始化数据库连接方法void ADOConn:OnInitADOConn()/ 初始化OLE/COM库环境, 由于ADO库是一组COM动态库,应用程序在调用ADO前,必须先初始化OLE/COM库环境,以便使调用COM的API工作正常。:CoInitialize(NULL); trym_pConnection.CreateInstance(ADODB.Connection); / 创建Connection对象/ 设置连接字符串,提供DBMS名称,数据库服务器所在位置,数据库的名称,用户名,口令_bstr_t strConnect = driver=SQL Server; Server=; DATABASE=XSGL; UID=sa;PWD= ;m_pConnection-Open(strConnect,adModeUnknown);/ 捕捉异常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);/ 取得表中的记录m_pRecORdset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);/ 捕捉异常catch(_com_errOR e)AfxMessageBox(e.Description(); / 返回记录集指针return m_pRecORdset; / 对数据库执行插入、删除、数据更新操作SQL命令的方法BOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL) /将SQL命令作为参数传递tryif(m_pConnection = 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)建立业务层:在XSGL信息系统中,学生表有插入、删除、数据更新这样的业务需求,因此,对数据库中的课程表建立一个课程业务类,封装相应的方法,以保证数据能够正确操作。同样,课程表与选课表也有类似的业务需求,也需要建立相应的业务类。class course public:CString cno,cname,tname,room; /对应表中的字段int credit; /对应表中的字段course();virtual course();void sql_insert();void sql_delete(CString icno);void sql_update(CString icno);/按课程编号,判断是否存在相同纪录int havecno(CString icno);#include ADOConn.hcourse:course() course:course() /课程业务类插入数据的接口,在此接口中,调用数据层类,将数据插入到数据库中void course:sql_insert()ADOConn adoconn;adoconn.OnInitADOConn();_bstr_t sqltemp;CString tempcredit; /_bstr_t中只支持字符串的相加操作,所以必须把数值转换成字符串tempcredit.FORmat(%f, credit );sqltemp=insert into course values(+cno+,+cname+,+tname+ ,+ tempcredit +,+ room +);adoconn.ExecuteSQL(sqltemp);adoconn.ExitConnect();/课程业务类删除数据的接口,在此接口中,调用数据层类,将数据从数据库中删除void course:sql_delete(CString icno)ADOConn adoconn;adoconn.OnInitADOConn();_bstr_t sqltemp;sqltemp=delete from course where cno=+icno+;adoconn.ExecuteSQL(sqltemp);adoconn.ExitConnect();/课程业务类更新数据的接口,在此接口中,调用数据层类,更新数据库中的数据void course:sql_update(CString icno)ADOConn adoconn;adoconn.OnInitADOConn();_bstr_t sqltemp;sqltemp=update course set cname=+cname+,tname=+tname+ where cno=+icno+;adoconn.ExecuteSQL(sqltemp);adoconn.ExitConnect();/按课程编号,判断是否存在相同纪录int course:havecno(CString icno)/根据当前用户输入的课程号,判断能否插入当前记录;如果存在,重新输入,否则插入ADOConn adoconn;_bstr_t sql;sql=select * from course where cno=+icno+;_RecORdsetPtr m_precORdset;m_precORdset=adoconn.GetRecORdSet(sql);if(m_precORdset-adoEOF)return -1;else return 1;adoconn.ExitConnect();(4)建立表示层:针对业务需求,建立相应的窗体,如:课程(学生、选课)输入、修改、删除窗体,这类窗体和数据库的数据传递,通过相应的业务类实现,所有信息的查询窗体,可以通过DataGrid控件较轻松地实现。()添加课程记录界面的实现(A)首先建立如图15-22所示的对话窗图15-22 添加课程纪录界面(B)在与对话窗对应的类interface_course中,添加如下所示的成员变量:CStringm_cno;CStringm_cname;CStringm_cteacher;intm_credit;CStringm_room;/在插入控件响应函数中,添加如下的代码:void interface_course:OnInsert() UpdateData(1); /获得用户界面输入的信息 course temp; /定义课程类的对象if(m_cno=)MessageBox(课程编号不能为空);return;if(m_cname=)MessageBox(课程名不能为空);return; if(m_cteacher=)MessageBox(任课教师不能为空);return;if(m_credit=0)MessageBox(学分不能为空);return; if(m_credit5 & m_credit0)MessageBox(学分必须在0.5-5的范围内);return;if(m_room=)MessageBox(教室不能为空);return;if(temp.havecno(m_cno)=1)MessageBox(该课程编号已存在);return;o=m_cno;ame=m_cname;temp.credit=m_credit;temp.tname=m_cteacher;temp.room=m_room;temp.sql_insert(); /调用课程类对象的插入函数,将表示层数据传送到数据库中if(temp.h

温馨提示

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

评论

0/150

提交评论