资源描述
实验四医学数据库读写模块的实现山东大学生物医学工程教研室实验四医学数据库读写1实验四医学数据库读写模块的实现山东大学实验四医学数据库目的和原理目的和原理PACS系统、HIS系统等都使用数据库技术来完成信息有效存取的操作,SQLServer作为一种高效的关系数据库系统经常被使用。本实验通过编写SQL语句,利用ADO实现读写操作,练习医学数据库读写模块的实现方法。关键词关键词:PACS,ADO,SQL语句,VC+,数据库技术实验四医学数据库读写2目的和原理PACS系统、HIS系统等都使用数据VC+数据库编程准备知识数据库编程准备知识1.ADO简介2.SQL语言介绍3.SQLServer数据库介绍实验四医学数据库读写3VC+数据库编程准备知识1.ADO简介实验四医学数据库读1.ADO简介简介ADO(ActiveXDataObject)是基于OLEDB(微软提供的通向不同数据源的低级应用程序接口)的访问接口,它对OLEDB的接口作了封装,它定义了ADO对象,属于数据库访问的高层接口。ADO提供了访问各种数据库的统一手段,它可以处理任何类型的数据。它功能强大,易于使用、速度快、内存支出少,并且支持ClientServer模式。实验四医学数据库读写41.ADO简介ADO(ActiveXDataADO访问数据库的过程如下:第一步:用#import指令引入动态链接库,并从其中取出对象和信息;第二步:使用智能指针_ConnectionPtr创建数据库的连接;第三步:利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录进行查询、处理;第四步:关闭和数据库的连接;实验四医学数据库读写5ADO访问数据库的过程如下:实验四医学数据库读写52.SQL语言介绍语言介绍SQL是英文(StructuredQueryLanguage)的缩写,意思为结构化查询语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。目前,绝大多数流行的关系型数据库管理系统,如Oracle,MicrosoftSQLServer,Access等都采用了SQL语言标准。SQL语言的优点:1.非过程化语言2.统一的语言3.是所有关系数据库的公共语言实验四医学数据库读写62.SQL语言介绍SQL是英文(StructuredQuSQL语言分类:数据查询语言DQL-DataQueryLanguage:SELECT数据操纵语言DML-DataManipulationLanguage:INSERT,UPDATE,DELETE数据定义语言DDL-DataDefinitionLanguage:CREATE,ALTER,DROP数据控制语言DCL-DataControlLanguage:COMMITWORK,ROLLBACKWORK本实验主要使用Select,Insert,Delete和Update实现对数据库的查询、插入、删除和修改操作。实验四医学数据库读写7SQL语言分类:实验四医学数据库读写73.SQLServer数据库数据库(1)SQLServer2000是Microsoft公司推出的数据库管理系统。具有使用方便、可伸缩性好、与相关软件集成程度高等优点。可跨越从多种平台使用。SQLServer是一个功能完备的数据库管理系统。它包括支持标准的SQL语言、并具有可扩展的特性。而其具备的存储过程、触发器等特性,也是大型数据库才拥有的。实验四医学数据库读写83.SQLServer数据库(1)SQLServer接下来向大家介绍一下建立数据库及在数据库中建表的过程:Step1:启动SQLServer企业管理器,在SQLServer组处单击右键,选择“新建SQLServer注册”,在出现的对话框中如下将服务器设为本机,也可根据所用服务器填写服务器ID。实验四医学数据库读写9接下来向大家介绍一下建立数据库及在数据库中建表的过程:实验四打开打开打开打开SQL ServerSQL Server企业管理器企业管理器企业管理器企业管理器返回返回返回返回实验四医学数据库读写10打开SQLServer企业管理器返回实验四医学数据库读写1设置服务器设置服务器设置服务器设置服务器实验四医学数据库读写11设置服务器实验四医学数据库读写11Step2:单击服务器旁的加号(+),其中便包含了已有的数据库。在数据库文件夹上单击鼠标右键,选择“新建数据库”菜单选项。系统会显示数据库属性对话框。Step3:选择常规标签(如图,该标签在初始时已默认被选中),在名称文本输入一个数据库名,我们这里输入的是dialog(即是创建后的数据库名)。其余的用默认值即可。实验四医学数据库读写12Step2:单击服务器旁的加号(+),其中便包含了已有的数据在服务器中建数据库在服务器中建数据库在服务器中建数据库在服务器中建数据库返回返回返回返回实验四医学数据库读写13在服务器中建数据库返回实验四医学数据库读写13新建新建新建新建dialogdialog数据库数据库数据库数据库返回返回返回返回实验四医学数据库读写14新建dialog数据库返回实验四医学数据库读写14Step4:单击数据库旁的加号(+),其中便包含了已有的表。在表文件夹上单击鼠标右键,选择“新建表”菜单选项。在出现的新窗口中设置新表的各项,关闭时保存该表并将其命名为dialog。Step5:打开该表并填写表的内容,至此,对数据库及其中的表的建立完成。实验四医学数据库读写15Step4:单击数据库旁的加号(+),其中便包含了已有的表。在在在在dialogdialog数据库中新建表数据库中新建表数据库中新建表数据库中新建表返回返回返回返回实验四医学数据库读写16在dialog数据库中新建表返回实验四医学数据库读写16设置表的属性设置表的属性设置表的属性设置表的属性返回返回返回返回实验四医学数据库读写17设置表的属性返回实验四医学数据库读写17打开打开打开打开dialogdialog表表表表返回返回返回返回实验四医学数据库读写18打开dialog表返回实验四医学数据库读写18填写填写填写填写dialogdialog表表表表(overover)返回返回返回返回实验四医学数据库读写19填写dialog表(over)返回实验四医学数据库读写19Step1:装ADO补丁包mdac_typ.exe。Step2:使用VC+新建对话框工程,并在工程中通过project-addtoproject-files添加ado.h和ado.cpp,通过这其中的五个类来间接使用ADO。Step3:在headerfiles中找到文件stdafx.h中#endif/_AFX_NO_AFXCMN_SUPPORT下面添加语句#import“C:ProgramFilesCommonFilesSystemadoMSADO15.DLL”no_namespacerename(“EOF”,“AdoEOF”),目的是引入ado的动态链接库(打开ADO补丁包mdac_typ.exe后就在计算机上安装了此动态链接库)。实验四医学数据库读写20Step1:装ADO补丁包mdac_typ.exe。实验四医实验四医学数据库读写21实验四医学数据库读写21Step4:在对话框类头文件中,引入头文件ado.h(#includeado.h)。Step5:在对话框类中加入CADODatabase的成员变量m_conn(成员变量一般加m_)。实验四医学数据库读写22实验四医学数据库读写22实验四医学数据库读写23实验四医学数据库读写23Step6:用对话框编辑工具条中的StaticText、EditBox、GroupBox和Button按钮编辑对话框的界面。Step7:编写由“查询”按钮生成的响应函数OnSearch。初始化连接串,连接数据库,并进行查询操作。Step8:编写由“插入”按钮生成的响应函数OnInsert,初始化连接串,连接数据库,并进行插入操作。Step9:编写由“删除”按钮生成的响应函数OnDelete,初始化连接串,连接数据库,并进行删除操作。Step10:编写由“修改”按钮生成的响应函数OnUpdate,初始化连接串,连接数据库,并进行修改操作。实验四医学数据库读写24Step6:用对话框编辑工具条中的StaticText、EStep6 Step6 用对话框编辑工具条中的用对话框编辑工具条中的用对话框编辑工具条中的用对话框编辑工具条中的Static TextStatic Text、Edit BoxEdit Box、Group BoxGroup Box和和和和ButtonButton按钮编辑对话框的界面按钮编辑对话框的界面按钮编辑对话框的界面按钮编辑对话框的界面返回返回返回返回返回致谢实验四医学数据库读写25Step6用对话框编辑工具条中的StaticText、E程序流程图(程序流程图(1)验证信息初始化连 接 PACS数据库是否成功?设定SQL检索条件检索是否成功记录是否结束添加查询值到显示列表显示查询结果关闭数据库程序结束显示连接失败显示检索失败移到下一条记录是否是否是否是验证信息初始化连 接 PACS数 据库是否成功?设定SQL插入条件插入操作返回值是否为真?显示“插入成功”关闭数据库程序结束显示连接失败显示“插入失败”是执行插入操作否否查询查询查询查询插入插入插入插入实验四医学数据库读写26程序流程图(1)验证信息初始化连接PACS数据库是否成功?程序流程图(程序流程图(2)是验证信息初始化连接PACS数据库是否成功?设定SQL更新条件插入操作返回值是否为真?显示“修改成功”关闭数据库程序结束显示连接失败显示“修改失败”是执行更新操作否是验证信息初始化连接PACS数据库是否成功?设定SQL删除条件插入操作返回值是否为真?显示“删除成功”关闭数据库程序结束显示连接失败显示“删除失败”是执行删除操作否删除删除删除删除修改修改修改修改实验四医学数据库读写27程序流程图(2)是验证信息初始化连接PACS数据库是否成功程序代码程序代码OnSearch()的源程序OnInsert()的源程序OnDelete()的源程序OnUpdate()的源程序实验四医学数据库读写28程序代码OnSearch()的源程序实验四医学数据库读写28wvoidCWhlDlg:OnSearch()wwUpdateData(true);wCStringstrConnectionStr;wCStringpassword=;wCStringuserid=sa;w/CStringdbname=LwPacs;wstrConnectionStr.Format(Provider=SQLOLEDB.1;Password=%s;PersistSecurityInfo=True;UserID=%s;InitailCataLog=lwpacs;DataSource=127.0.0.1,password,userid);wif(!m_conn.Open(strConnectionStr)wwAfxMessageBox(无法访问PACS数据库,按“确定”退出程序);wexit(0);wwelsewwCADORecordsetRecordSet(&(m_conn);/结果集变量,m_conn表示查询前首先建立的连接wOnSearchOnSearch()的源程序()的源程序()的源程序()的源程序实验四医学数据库读写29voidCWhlDlg:OnSearch()OnSeawCStringsql;wsql.Format(select*fromdialog.dbo.dialogwherePatId=%sorPatNam=%sorPatSex=%sorPatAge=%s,m_pid,m_pnam,m_psex,m_page);wif(!RecordSet.Open(sql,CADORecordset:openQuery)/open即开始执行查找wAfxMessageBox(数据库检索失败!);welsewCStringstrNameList=;wwhile(!RecordSet.IsEOF()wwCStringstrName=;wRecordSet.GetFieldValue(PatNam,strName);wstrNameList+=strName;wstrNameList+=,;wRecordSet.MoveNext();wwAfxMessageBox(strNameList);wwm_conn.Close();ww实验四医学数据库读写30CStringsql;实验四医学数据库读写30void 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)/成功插入后返回成功插入后返回1AfxMessageBox(插入成功!插入成功!);else AfxMessageBox(插入失败!插入失败!);m_conn.Close();实验四医学数据库读写31voidCWhlDlg:OnInsert()实验四医学void CWhlDlg:OnDelete()UpdateData(true);CString strConnectionStr;CString password=;CString userid=sa;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);elseCString sql;sql.Format(delete 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(m_conn.Execute(sql)/成功删除后返回成功删除后返回1AfxMessageBox(删除成功!删除成功!);else AfxMessageBox(删除失败!删除失败!);m_conn.Close();实验四医学数据库读写32voidCWhlDlg:OnDelete()实验四医学void CWhlDlg:OnUpdate()UpdateData(true);CString strConnectionStr;CString password=;CString userid=sa;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);elseCString sql;sql.Format(update dialog.dbo.dialog set PatNam=%s,PatSex=%s,PatAge=%s where PatId=%s,m_pnam,m_psex,m_page,m_pid);if(m_conn.Execute(sql)/成功修改后返回成功修改后返回1AfxMessageBox(修改成功!修改成功!);else AfxMessageBox(修改失败!修改失败!);m_conn.Close();实验四医学数据库读写33voidCWhlDlg:OnUpdate()实验四医学6.程序中用到的函数及参数含义程序中用到的函数及参数含义*UpdateData(true),使edit控件中的内容与其对应变量值保持一致,实现查询内容的是实时更新。*strConnectionStr.FormatProvider=SQLOLEDB.1;Password=%s;PersistSecurityInfo=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(Csting const a,Cstring b)获取一条记录中的某个字段,将a属性对应的值赋给b*RecordSet.MoveNext()转到下一条记录。*CADODatabase.Close()关闭与数据库的连接。*m_conn.Execute(strSQL)执行指定的SQL语句实验四医学数据库读写346.程序中用到的函数及参数含义*UpdateData(7.验证运行情况验证运行情况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表发现病人信息已修改.实验四医学数据库读写357.验证运行情况Step1:经过编译、连接和运行程序没有经过编译、连接和运行程序没有错误经过编译、连接和运行程序没有错误经过编译、连接和运行程序没有错误经过编译、连接和运行程序没有错误返回返回返回返回实验四医学数据库读写36经过编译、连接和运行程序没有错误返回实验四医学数据库读写3验证查询验证查询验证查询验证查询:在查询项中的编号输入在查询项中的编号输入在查询项中的编号输入在查询项中的编号输入00010001,单击,单击,单击,单击“查询查询查询查询”按钮按钮按钮按钮返回实验四医学数据库读写37验证查询:在查询项中的编号输入0001,单击“查询”按钮返回查询结果查询结果查询结果查询结果返回返回返回返回实验四医学数据库读写38查询结果返回实验四医学数据库读写38打开打开打开打开dialogdialog数据库中的数据库中的数据库中的数据库中的dialogdialog表,发现查询的信息是正确的表,发现查询的信息是正确的表,发现查询的信息是正确的表,发现查询的信息是正确的返回实验四医学数据库读写39打开dialog数据库中的dialog表,发现查询的信息是正验证插入验证插入验证插入验证插入:在插入项的各项中依次输入在插入项的各项中依次输入在插入项的各项中依次输入在插入项的各项中依次输入00110011、王洪良、男、王洪良、男、王洪良、男、王洪良、男、2323,单击,单击,单击,单击“插入插入插入插入”按钮按钮按钮按钮返回实验四医学数据库读写40验证插入:在插入项的各项中依次输入0011、王洪良、男、23插入结果插入结果插入结果插入结果返回实验四医学数据库读写41插入结果返回实验四医学数据库读写41打开打开打开打开dialogdialog数据库中的数据库中的数据库中的数据库中的dialogdialog表会发现信息已经插入成功表会发现信息已经插入成功表会发现信息已经插入成功表会发现信息已经插入成功返回实验四医学数据库读写42打开dialog数据库中的dialog表会发现信息已经插入成验证删除验证删除验证删除验证删除:输入病人信息,此处我们输入编号输入病人信息,此处我们输入编号输入病人信息,此处我们输入编号输入病人信息,此处我们输入编号00010001,单击,单击,单击,单击“删除删除删除删除”按钮按钮按钮按钮返回实验四医学数据库读写43验证删除:输入病人信息,此处我们输入编号0001,单击“删除删除结果删除结果删除结果删除结果返回实验四医学数据库读写44删除结果返回实验四医学数据库读写44打开打开打开打开dialogdialog数据库中的数据库中的数据库中的数据库中的dialogdialog表,发现病人信息已删除表,发现病人信息已删除表,发现病人信息已删除表,发现病人信息已删除.返回实验四医学数据库读写45打开dialog数据库中的dialog表,发现病人信息已删除最后最后最后最后,验证修改验证修改验证修改验证修改:输入拟修改的病人信息,将输入拟修改的病人信息,将输入拟修改的病人信息,将输入拟修改的病人信息,将00110011号王洪良的性别和年龄号王洪良的性别和年龄号王洪良的性别和年龄号王洪良的性别和年龄改为女、改为女、改为女、改为女、5858,输入信息,单击,输入信息,单击,输入信息,单击,输入信息,单击“修改修改修改修改”按钮按钮按钮按钮返回实验四医学数据库读写46最后,验证修改:输入拟修改的病人信息,将0011号王洪良的性修改结果修改结果修改结果修改结果返回实验四医学数据库读写47修改结果返回实验四医学数据库读写47打开打开打开打开dialogdialog数据库的数据库的数据库的数据库的dialogdialog表发现病人信息已修改表发现病人信息已修改表发现病人信息已修改表发现病人信息已修改(overover)返回实验四医学数据库读写48打开dialog数据库的dialog表发现病人信息已修改(o
展开阅读全文