【文档说明】实验四医学数据库读写课件.ppt,共(48)页,1.043 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-253237.html
以下为本文档部分文字说明:
实验四医学数据库读写模块的实现山东大学生物医学工程教研室实验四医学数据库读写1目的和原理PACS系统、HIS系统等都使用数据库技术来完成信息有效存取的操作,SQLServer作为一种高效的关系数据库系统经常被使用。本实验通过编写SQL语句,利用ADO实现
读写操作,练习医学数据库读写模块的实现方法。关键词:PACS,ADO,SQL语句,VC++,数据库技术实验四医学数据库读写2VC++数据库编程准备知识1.ADO简介2.SQL语言介绍3.SQLServer数据库介绍实验四医学数据库读写31.AD
O简介•ADO(ActiveXDataObject)是基于OLEDB(微软提供的通向不同数据源的低级应用程序接口)的访问接口,它对OLEDB的接口作了封装,它定义了ADO对象,属于数据库访问的高层接口。ADO提供了访问各种数据库的统一手段,它可以处理任何类型的数据。它功能强大,易于使
用、速度快、内存支出少,并且支持Client/Server模式。实验四医学数据库读写4•ADO访问数据库的过程如下:•第一步:用#import指令引入动态链接库,并从其中取出对象和信息;•第二步:使用智能指针_ConnectionPtr创建数据库的连接;•第三步:利用建立好的连接,
通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录进行查询、处理;•第四步:关闭和数据库的连接;实验四医学数据库读写52.SQL语言介绍•SQL是英文(StructuredQueryLangua
ge)的缩写,意思为结构化查询语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。目前,绝大多数流行的关系型数据库管理系统,如Oracle,MicrosoftSQLServer,Acc
ess等都采用了SQL语言标准。•SQL语言的优点:1.非过程化语言2.统一的语言3.是所有关系数据库的公共语言实验四医学数据库读写6•SQL语言分类:数据查询语言DQL-DataQueryLanguage:SELECT数据操纵语言DML-DataManipulatio
nLanguage:INSERT,UPDATE,DELETE数据定义语言DDL-DataDefinitionLanguage:CREATE,ALTER,DROP数据控制语言DCL-DataControlLanguage:COMMITWORK,ROLLBACKWORK•本实验主要使用Sele
ct,Insert,Delete和Update实现对数据库的查询、插入、删除和修改操作。实验四医学数据库读写73.SQLServer数据库(1)•SQLServer2000是Microsoft公司推出的数据库管理系统。具
有使用方便、可伸缩性好、与相关软件集成程度高等优点。可跨越从多种平台使用。•SQLServer是一个功能完备的数据库管理系统。它包括支持标准的SQL语言、并具有可扩展的特性。而其具备的存储过程、触发器等特性,也是大型数据库才拥有的。实
验四医学数据库读写8•接下来向大家介绍一下建立数据库及在数据库中建表的过程:•Step1:启动SQLServer企业管理器,在SQLServer组处单击右键,选择“新建SQLServer注册”,在出现的对话框中如下将服务器设为
本机,也可根据所用服务器填写服务器ID。实验四医学数据库读写9打开SQLServer企业管理器返回实验四医学数据库读写10设置服务器实验四医学数据库读写11Step2:单击服务器旁的加号(+),其中便包含了已有的数据库。
在数据库文件夹上单击鼠标右键,选择“新建数据库”菜单选项。系统会显示数据库属性对话框。Step3:选择常规标签(如图,该标签在初始时已默认被选中),在名称文本输入一个数据库名,我们这里输入的是dialog(即是创建后的数据库名)。其余的用默认值即可。实验四医学数据库读写12在服务器中建数据库返回实
验四医学数据库读写13新建dialog数据库返回实验四医学数据库读写14Step4:单击数据库旁的加号(+),其中便包含了已有的表。在表文件夹上单击鼠标右键,选择“新建表”菜单选项。在出现的新窗口中设置新表的各项,关闭时保存该表并将其命名为dialog。Step5:打开该表
并填写表的内容,至此,对数据库及其中的表的建立完成。实验四医学数据库读写15在dialog数据库中新建表返回实验四医学数据库读写16设置表的属性返回实验四医学数据库读写17打开dialog表返回实验四医学数据库读写18填写dialog表(over)返回实验四医学数据库读写1
9•Step1:装ADO补丁包mdac_typ.exe。•Step2:使用VC++新建对话框工程,并在工程中通过project->addtoproject->files添加ado.h和ado.cpp,通过这其中的五个类来间接使用ADO。•Step3:在head
erfiles中找到文件stdafx.h中#endif//_AFX_NO_AFXCMN_SUPPORT下面添加语句#import“C:\\ProgramFiles\\CommonFiles\\Syst
em\\ado\\MSADO15.DLL”no_namespacerename(“EOF”,“AdoEOF”),目的是引入ado的动态链接库(打开ADO补丁包mdac_typ.exe后就在计算机上安装了此动态链接库)。实验四医学数据库读写20实验四医学数据库读写21•Step4
:在对话框类头文件中,引入头文件ado.h(#include"ado.h")。•Step5:在对话框类中加入CADODatabase的成员变量m_conn(成员变量一般加m_)。实验四医学数据库读写22实验四医学数据库读写23•Step6:用对话框编
辑工具条中的StaticText、EditBox、GroupBox和Button按钮编辑对话框的界面。•Step7:编写由“查询”按钮生成的响应函数OnSearch。初始化连接串,连接数据库,并进行查询操作。•Step8:编写由“插入”按钮生成的响应函数OnInsert,初始化连接串,连接数据
库,并进行插入操作。•Step9:编写由“删除”按钮生成的响应函数OnDelete,初始化连接串,连接数据库,并进行删除操作。•Step10:编写由“修改”按钮生成的响应函数OnUpdate,初始化连接串,连接数据库,并进行修改操作。实验四医学数
据库读写24Step6用对话框编辑工具条中的StaticText、EditBox、GroupBox和Button按钮编辑对话框的界面返回返回致谢实验四医学数据库读写25程序流程图(1)•验证信息初始化连接PACS数据库
是否成功?设定SQL检索条件检索是否成功记录是否结束添加查询值到显示列表显示查询结果关闭数据库程序结束显示连接失败显示检索失败移到下一条记录是否是否是否是验证信息初始化连接PACS数据库是否成功?设定SQL插入条件插入操作返回值
是否为真?显示“插入成功”关闭数据库程序结束显示连接失败显示“插入失败”是执行插入操作否否查询插入实验四医学数据库读写26程序流程图(2)•是验证信息初始化连接PACS数据库是否成功?设定SQL更新条件插入操作返回值是否为真?
显示“修改成功”关闭数据库程序结束显示连接失败显示“修改失败”是执行更新操作否是验证信息初始化连接PACS数据库是否成功?设定SQL删除条件插入操作返回值是否为真?显示“删除成功”关闭数据库程序结束显示连接失败显示“删除失败”是执行删除操作否删除修改实验四医学数据库读写2
7程序代码•OnSearch()的源程序•OnInsert()的源程序•OnDelete()的源程序•OnUpdate()的源程序实验四医学数据库读写28voidCWhlDlg::OnSearch(){
UpdateData(true);CStringstrConnectionStr;CStringpassword="";CStringuserid="sa";//CStringdbname="LwPacs";strC
onnectionStr.Format("Provider=SQLOLEDB.1;Password=%s;PersistSecurityInfo=True;UserID=%s;InitailCataLog=lwpacs;DataSource=
127.0.0.1",password,userid);if(!m_conn.Open(strConnectionStr)){AfxMessageBox("无法访问PACS数据库,按“确定”退出程序");exit(0)
;}else{CADORecordsetRecordSet(&(m_conn));//结果集变量,m_conn表示查询前首先建立的连接OnSearch()的源程序实验四医学数据库读写29CStringsql;sql.Form
at("select*fromdialog.dbo.dialogwherePatId='%s'orPatNam='%s'orPatSex='%s'orPatAge='%s'",m_pid,m_pnam,m_psex,m_page);if(!RecordSet.Open(sql,CADORec
ordset::openQuery))//open即开始执行查找{AfxMessageBox("数据库检索失败!");}else{CStringstrNameList="";while(!Record
Set.IsEOF()){CStringstrName="";RecordSet.GetFieldValue("PatNam",strName);strNameList+=strName;strNameList+=",";RecordSet.MoveNext();
}AfxMessageBox(strNameList);}m_conn.Close();}}实验四医学数据库读写30•voidCWhlDlg::OnInsert()•{UpdateData(true);//用文本
框中的内容更新成员变量,•CStringstrConnectionStr;•CStringpassword="";•CStringuserid="sa";•//CStringdbname="lwpacs";•strCo
nnectionStr.Format("Provider=SQLOLEDB.1;Password=%s;PersistSecurityInfo=True;UserID=%s;InitailCataLog=lwpacs;DataSource=12
7.0.0.1",password,userid);•if(!m_conn.Open(strConnectionStr))•{AfxMessageBox("无法访问PACS数据库,按“确定”退出程序"
);•exit(0);}•else•{•CStringstrSQL="insertintodialog.dbo.dialog(PatID,PatNam,PatSex,PatAge)values(";•strSQL+="'"+m_pid+"',";•strSQL+="'"+m_pn
am+"',";•strSQL+="'"+m_psex+"',";•strSQL+="'"+m_page+"')";•if(m_conn.Execute(strSQL))//成功插入后返回1•AfxMessageBox("插入成功!");•elseAfxMessageB
ox("插入失败!");•m_conn.Close();•}•}实验四医学数据库读写31•voidCWhlDlg::OnDelete()•{UpdateData(true);•CStringstrConnectionStr;•CStringpassword="";•CStringus
erid="sa";•strConnectionStr.Format("Provider=SQLOLEDB.1;Password=%s;PersistSecurityInfo=True;UserID=%s;InitailCataLog=
lwpacs;DataSource=127.0.0.1",password,userid);•if(!m_conn.Open(strConnectionStr))•{AfxMessageBox("无法访问PACS数据库,按“确定”退出程序");•exit(0);
}•else•{CStringsql;•sql.Format("deletefromdialog.dbo.dialogwherePatId='%s'orPatNam='%s'orPatSex='%s'orPatAge='%s'",m_pid,m_pnam,m_psex,m_pa
ge);•if(m_conn.Execute(sql))//成功删除后返回1•AfxMessageBox("删除成功!");•elseAfxMessageBox("删除失败!");•m_conn.Close();•}•}实验四医学数据库读写32•voidCWhlDlg::On
Update()•{UpdateData(true);•CStringstrConnectionStr;•CStringpassword="";•CStringuserid="sa";•strConnectionStr.Format("Provider=SQLOLEDB.1;Password
=%s;PersistSecurityInfo=True;UserID=%s;InitailCataLog=lwpacs;DataSource=127.0.0.1",password,userid);•if(!m_conn.
Open(strConnectionStr))•{AfxMessageBox("无法访问PACS数据库,按“确定”退出程序");•exit(0);}•else•{CStringsql;•sql.Format("updatedialog.db
o.dialogsetPatNam='%s',PatSex='%s',PatAge='%s'wherePatId='%s'",m_pnam,m_psex,m_page,m_pid);•if(m_conn.Execute(sql))//成功修改后返回
1•AfxMessageBox("修改成功!");•elseAfxMessageBox("修改失败!");•m_conn.Close();•}•}实验四医学数据库读写336.程序中用到的函数及参数含义•*Updat
eData(true),使edit控件中的内容与其对应变量值保持一致,实现查询内容的是实时更新。•*strConnectionStr.FormatProvider=SQLOLEDB.1;Password=%s;PersistSec
urityInfo=True;UserID=%s;InitailCataLog=lwpacs;DataSource=127.0.0.1“,password,userid),初始化数据库登陆信息.•*m_conn.Open(strConnectionStr)验证数据库登陆信息与数据库系统是否匹配
,匹配的话打开数据库.strConnectionStr为登陆信息字符串,由上一函数初始化。•*RecordSet.Open(sql,CADORecordset::openQuery)验证是否连接到记录,sql为SQL
操作语句字符串,CADORecordset::openQuery为SQL查询操作标志字符,属于enum数据类型。•*AfxMessageBox()是系统自带的提示框函数,可用于程序调试•*RecordSet.IsEOF()是检验是否在结果
集最后一条记录之后•*RecordSet.GetFieldValue(Cstingconsta,Cstringb)获取一条记录中的某个字段,将a属性对应的值赋给b.•*RecordSet.MoveNext()转到下一条记录。•*CADO
Database.Close()关闭与数据库的连接。•*m_conn.Execute(strSQL)执行指定的SQL语句实验四医学数据库读写347.验证运行情况•Step1:经过编译、连接和运行程序没有错误.如图。•
Step2:验证OnSearch()程序,在查询项中的编号输入0001,单击“查询”按钮。运行结果如图。•Step3:打开dialog数据库中的dialog表,发现查询的信息是正确的.•Step4:验证
OnInsert()程序,在插入项的各项中依次输入0011、王洪良、男、23,单击“插入”按钮。运行结果如图。•Step5:打开dialog数据库中的dialog表会发现信息已经插入成功.•Step6:验证OnDelete()程序,输入病人任一信息,此处
我们输入编号0001,单击“删除”按钮.•Step7:打开dialog数据库中的dialog表,发现病人信息已删除.•Step8:验证OnUpdate()程序,输入拟修改的病人信息,如将0011号王洪良的性别和年龄改为女、58,输入信息,单击“修改”按钮.•Step9:打开dialog数据
库的dialog表发现病人信息已修改.实验四医学数据库读写35经过编译、连接和运行程序没有错误•返回实验四医学数据库读写36验证查询:在查询项中的编号输入0001,单击“查询”按钮返回实验四医学数据库读写37查询结果返回实验四医学数据库读写38打开dialog数据库中的dialog表,发现
查询的信息是正确的返回实验四医学数据库读写39验证插入:在插入项的各项中依次输入0011、王洪良、男、23,单击“插入”按钮返回实验四医学数据库读写40插入结果返回实验四医学数据库读写41打开dialog数据库中的dialog表
会发现信息已经插入成功返回实验四医学数据库读写42验证删除:输入病人信息,此处我们输入编号0001,单击“删除”按钮返回实验四医学数据库读写43删除结果返回实验四医学数据库读写44打开dialog数据库中的dialog表,发现病人信息已删除.返回实验四医学数据库读写4
5最后,验证修改:输入拟修改的病人信息,将0011号王洪良的性别和年龄改为女、58,输入信息,单击“修改”按钮返回实验四医学数据库读写46修改结果返回实验四医学数据库读写47打开dialog数据库的dialog表发现病人信息已修改(over)返回实验四医学数据库读写48