资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,*,*,实验四,医学数据库读写模块的实现,山东大学,生物医学工程教研室,1,目的和原理,PACS,系统、,HIS,系统等都,使用数据库技术来完成信息有效存取的操作,,SQL Server,作为一种高效的关系数据库系统经常被使用。本实验通过编写,SQL,语句,利用,ADO,实现读写操作,练习医学数据库读写模块的实现方法。,关键词,:,PACS,ADO,SQL,语句,VC+,数据库技术,2,VC+,数据库编程准备知识,1.ADO,简介,2.SQL,语言介绍,3.SQL Server,数据库介绍,3,1.ADO,简介,ADO(ActiveX Data Object),是基于,OLE DB(,微软提供的通向不同数据源的低级应用,程序,接口,),的访问接口,它对,OLE DB,的接口作了封装,它定义了,ADO,对象,属于数据库访问的高层接口。,ADO,提供了访问各种数据库的统一手段,它可以处理任何类型的数据。它功能强大,易于使用、速度快、内存支出少,并且支持,Client,Server,模式。,4,ADO,访问数据库的过程如下,:,第一步,:,用,#import,指令引入动态链接库,并从其中取出对象和信息;,第二步,:,使用智能指针,_,ConnectionPtr,创建数据库的连接;,第三步,:,利用建立好的连接,通过,Connection,、,Command,对象执行,SQL,命令,或利用,Recordset,对象取得结果记录进行查询、处理;,第四步:关闭和数据库的连接;,5,2.SQL,语言介绍,SQL,是英文(,Structured Query Language,),的缩写,意思为结构化查询语言。,SQL,语言结构简洁,功能强大,简单易学,所以自从,IBM,公司,1981,年推出以来,,SQL,语言得到了广泛的应用。目前,绝大多数流行的关系型数据库管理系统,如,Oracle,Microsoft SQL Server,Access,等都采用了,SQL,语言标准。,SQL,语言的优点:,1.,非过程化语言,2.,统一的语言,3.,是所有关系数据库的公共语言,6,SQL,语言分类,:,数据查询语言,DQL-Data Query Language,:,SELECT,数据操纵语言,DML-Data Manipulation Language,:,INSERT,UPDATE,DELETE,数据定义语言,DDL-Data Definition Language,:,CREATE,ALTER,DROP,数据控制语言,DCL-Data Control Language,:,COMMIT WORK,ROLLBACK WORK,本实验主要使用,Select,Insert,Delete,和,Update,实现对数据库的查询、插入、删除和修改操作。,7,3.SQL Server,数据库,(1),SQL Server 2000 是Microsoft 公司推出的数据库管理系统。具有使用方便、可伸缩性好、与相关软件集成程度高等优点。可跨越从多种平台使用。,SQL Server是一个功能完备的数据库管理系统。它包括支持标准的SQL语言、并具有可扩展的特性。而其具备的存储过程、触发器等特性,也是大型数据库才拥有的,。,8,接下来向大家介绍一下建立数据库及在数据库中建表的,过程,:,Step1,:,启动,SQL Server,企业管理器,在,SQLServer,组处单击右键,选择“新建,SQLServer,注册”,在出现的对话框中如下将服务器设为本机,也可根据所用服务器填写服务器,ID,。,9,打开,SQL Server,企业管理器,返回,10,设置服务器,11,Step2,:单击服务器旁的加号,(+),,其中便包含了已有的数据库。在数据库文件夹上单击鼠标右键,选择“新建数据库”菜单选项。系统会显示数据库属性对话框。,Step3,:选择常规标签,(,如图,该标签在初始时已默认被选中,),,在名称文本输入一个数据库名,我们这里输入的是,dialog(,即是创建后的数据库名,),。其余的用默认值即可。,12,在服务器中建数据库,返回,13,新建,dialog,数据库,返回,14,Step4,:单击数据库旁的加号,(+),,其中便包含了已有的表。在表文件夹上单击鼠标右键,选择“新建表”菜单选项。在出现的新窗口中设置新表的各项,关闭时保存该表并将其命名为,dialog,。,Step5,:打开该表并填写表的内容,至此,对数据库及其中的表的建立完成。,15,在,dialog,数据库中新建表,返回,16,设置表的属性,返回,17,打开,dialog,表,返回,18,填写,dialog,表,(,over,),返回,19,Step1,:装,ADO,补丁包,mdac_typ.exe,。,Step2,:,使用,VC+,新建对话框工程,并在工程中通过,project-add to project-files,添加,ado.h,和,ado.cpp,,,通过这其中的五个类来间接使用,ADO,。,Step3,:在,header files,中找到文件,stdafx.h,中,#,endif,/_AFX_NO_AFXCMN_SUPPORT,下面添加语句,#import“C:Program FilesCommon FilesSystemadoMSADO15.DLL”no_namespace rename(“EOF”,“,AdoEOF,”),,,目的是引入,ado,的动态链接库(打开,ADO,补丁包,mdac_typ.exe,后就在计算机上安装了此动态链接库)。,20,21,Step4,:,在对话框类头文件中,引入头文件,ado.h,(,#include ado.h,)。,Step5,:,在对话框类中加入,CADODatabase,的成员变量,m_conn,(,成员变量一般加,m_,)。,22,23,Step6,:,用对话框编辑工具条中的,Static Text,、,Edit Box,、,Group Box,和,Button,按钮编辑对话框的界面。,Step7,:,编写由“查询”按钮生成的响应函数,OnSearch,。,初始化连接串,连接数据库,并进行查询操作。,Step8,:,编写由“插入”按钮生成的响应函数,OnInsert,,,初始化连接串,连接数据库,并进行插入操作。,Step9,:,编写由“删除”按钮生成的响应函数,OnDelete,,,初始化连接串,连接数据库,并进行删除操作。,Step10,:,编写由“修改”按钮生成的响应函数,OnUpdate,,,初始化连接串,连接数据库,并进行修改操作。,24,Step6,用对话框编辑工具条中的,Static Text,、,Edit Box,、,Group Box,和,Button,按钮编辑对话框的界面,返回,返回,致谢,25,程序流程图(,1,),验证信息初始化,连接,PACS,数据库是否成功?,设定,SQL,检索条件,检索是否成功,记录是否结束,添加查询值到显示列表,显示查询结果,关闭数据库,程序结束,显示连接失败,显示检索失败,移到下一条记录,是,否,是,否,是,否,是,验证信息初始化,连接,PACS,数据库是否成功?,设定,SQL,插入条件,插入操作返回值是否为真?,显示“插入成功”,关闭数据库,程序结束,显示连接失败,显示“插入失败”,是,执行插入操作,否,否,查询,插入,26,程序流程图(,2,),是,验证信息初始化,连接,PACS,数据库是否成功?,设定,SQL,更新条件,插入操作返回值是否为真?,显示“修改成功”,关闭数据库,程序结束,显示连接失败,显示“修改失败”,是,执行更新操作,否,是,验证信息初始化,连接,PACS,数据库是否成功?,设定,SQL,删除条件,插入操作返回值是否为真?,显示“删除成功”,关闭数据库,程序结束,显示连接失败,显示“删除失败”,是,执行删除操作,否,删除,修改,27,程序代码,OnSearch,(),的源,程序,OnInsert,(),的源,程序,OnDelete,(),的源,程序,OnUpdate,(),的源,程序,28,void,CWhlDlg:OnSearch,(),UpdateData(true,);,CString,strConnectionStr,;,CString,password=;,CString,userid,=,sa,;,/,CString,dbname,=,LwPacs,;,strConnectionStr.Format(Provider,=SQLOLEDB.1;Password=%s;Persist Security Info=True;User ID=%,s;Initail,CataLog,=,lwpacs;Data,Source=127.0.0.1,password,userid);,if(!m_conn.Open(strConnectionStr,),AfxMessageBox,(,无法访问,PACS,数据库,按“确定”退出程序,);,exit(0);,else,CADORecordset,RecordSet(&(m_conn,);/,结果集变量,,m_conn,表示查询前首先建立的连接,OnSearch,(),的源程序,29,CString,sql,;,sql.Format(select,*from,dialog.dbo.dialog,where,PatId,=%s or,PatNam,=%s or,PatSex,=%s or,PatAge,=%,s,m_pid,m_pnam,m_psex,m_page,);,if(!RecordSet.Open(sql,CADORecordset:openQuery,)/open,即开始执行查找,AfxMessageBox,(,数据库检索失败,!);,else,CString,strNameList,=;,while(!RecordSet.IsEOF,(),CString,strName,=;,RecordSet.GetFieldValue(PatNam,strName,);,strNameList,+=,strName,;,strNameList,+=,;,RecordSet.MoveNext,();,AfxMessageBox(strNameList,);,m_conn.Close,();,30,void,CWhlDlg:OnInsert,(),UpdateData(true,);/,用文本框中的内容更新成员变量,,CString,strConnectionStr,;,CString,password=;,CString,userid,=,sa,;,/,CString,dbname,=,lwpacs,;,strConnectionStr.Format(Provider,=SQLOLEDB.1;Password=%s;Persist Security Info=True;User ID=%,s;Initail,CataLog,=,lwpacs;Data,Source=127.0.0.1,password,userid);,if(!m_conn.Open(strConnectionStr,),AfxMessageBox,(,无法访问,PACS,数据库,按“确定”退出程序,);,exit(0);,else,CString,strSQL,=insert into,dialog.dbo.dialog(PatID,PatNam,PatSex,PatAge,)values(;,strSQL,+=+,m_pid,+,;,strSQL,+=+,m_pnam,+,;,strSQL,+=+,m_psex,+,;,strSQL,+=+m_page+);,if(m_conn.Execute(strSQL,)/,成功插入后返回,1,AfxMessageBox,(,插入成功
展开阅读全文