版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四
医学数据库读写模块的实现0102PACS系统、HIS系统等都使用数据库技术来完成信息有效存取的操作,SQLServer作为一种高效的关系数据库系统经常被使用。本实验通过编写SQL语句,利用ADO实现读写操作,练习医学数据库读写模块的实现方法。
关键词:PACS,ADO,SQL语句,VC++,数据库技术目的和原理ADO简介01SQL语言介绍02SQLServer数据库介绍03VC++数据库编程准备知识1.ADO简介ADO(ActiveXDataObject)是基于OLEDB(微软提供的通向不同数据源的低级应用程序接口)的访问接口,它对OLEDB的接口作了封装,它定义了ADO对象,属于数据库访问的高层接口。ADO提供了访问各种数据库的统一手段,它可以处理任何类型的数据。它功能强大,易于使用、速度快、内存支出少,并且支持Client/Server模式。
ADO访问数据库的过程如下:用#import指令引入动态链接库,并从其中取出对象和信息;使用智能指针_ConnectionPtr创建数据库的连接;利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录进行查询、处理;关闭和数据库的连接;SQL是英文(StructuredQueryLanguage)的缩写,意思为结构化查询语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。目前,绝大多数流行的关系型数据库管理系统,如Oracle,MicrosoftSQLServer,Access等都采用了SQL语言标准。
SQL语言的优点:非过程化语言统一的语言是所有关系数据库的公共语言2.SQL语言介绍SQL语言分类:
数据查询语言DQL-DataQueryLanguage:SELECT
数据操纵语言DML-DataManipulationLanguage:INSERT,UPDATE,DELETE
数据定义语言DDL-DataDefinitionLanguage:CREATE,ALTER,DROP
数据控制语言DCL-DataControlLanguage:COMMITWORK,ROLLBACKWORK本实验主要使用Select,Insert,Delete和Update实现对数据库的查询、插入、删除和修改操作。
3.SQLServer数据库(1)QLServer2000是Microsoft公司推出的数据库管理系统。具有使用方便、可伸缩性好、与相关软件集成程度高等优点。可跨越从多种平台使用。SQLServer是一个功能完备的数据库管理系统。它包括支持标准的SQL语言、并具有可扩展的特性。而其具备的存储过程、触发器等特性,也是大型数据库才拥有的。
接下来向大家介绍一下建立数据库及在数据库中建表的过程:Step1:启动SQLServer企业管理器,在SQLServer组处单击右键,选择"新建SQLServer注册”,在出现的对话框中如下将服务器设为本机,也可根据所用服务器填写服务器ID。
0102打开SQLServer企业管理器返回设置服务器Step2:单击服务器旁的加号(+),其中便包含了已有的数据库。在数据库文件夹上单击鼠标右键,选择"新建数据库”菜单选项。系统会显示数据库属性对话框。
Step3:选择常规标签(如图,该标签在初始时已默认被选中),在名称文本输入一个数据库名,我们这里输入的是dialog(即是创建后的数据库名)。其余的用默认值即可。
在服务器中建数据库返回新建dialog数据库返回Step4:单击数据库旁的加号(+),其中便包含了已有的表。在表文件夹上单击鼠标右键,选择"新建表”菜单选项。在出现的新窗口中设置新表的各项,关闭时保存该表并将其命名为dialog。
01Step5:打开该表并填写表的内容,至此,对数据库及其中的表的建立完成。
02在dialog数据库中新建表返回设置表的属性返回打开dialog表返回填写dialog表(over)返回Step1:装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:\\ProgramFiles\\CommonFiles\\System\\ado\\MSADO15.DLL”no_namespacerename(“EOF”,“AdoEOF”),目的是引入ado的动态链接库(打开ADO补丁包mdac_typ.exe后就在计算机上安装了此动态链接库)。
Step4:在对话框类头文件中,引入头文件ado.h(#include"ado.h")。
01Step5:在对话框类中加入CADODatabase的成员变量m_conn(成员变量一般加m_)。
02Step9:编写由"删除”按钮生成的响应函数OnDelete,初始化连接串,连接数据库,并进行删除操作。
Step6:用对话框编辑工具条中的StaticText、EditBox、GroupBox和Button按钮编辑对话框的界面。
Step8:编写由"插入”按钮生成的响应函数OnInsert,初始化连接串,连接数据库,并进行插入操作。
Step7:编写由"查询”按钮生成的响应函数OnSearch。初始化连接串,连接数据库,并进行查询操作。
Step10:编写由"修改”按钮生成的响应函数OnUpdate,初始化连接串,连接数据库,并进行修改操作。
Step6用对话框编辑工具条中的StaticText、EditBox、GroupBox和Button按钮编辑对话框的界面返回返回致谢程序流程图(1)
验证信息初始化连接PACS数据库是否成功?设定SQL检索条件检索是否成功记录是否结束添加查询值到显示列表显示查询结果关闭数据库程序结束显示连接失败显示检索失败移到下一条记录是否是否是否是验证信息初始化连接PACS数据库是否成功?设定SQL插入条件插入操作返回值是否为真?显示"插入成功”关闭数据库程序结束显示连接失败显示"插入失败”是执行插入操作否否查询插入程序流程图(2)
是验证信息初始化连接PACS数据库是否成功?设定SQL更新条件插入操作返回值是否为真?显示"修改成功”关闭数据库程序结束显示连接失败显示"修改失败”是执行更新操作否是验证信息初始化连接PACS数据库是否成功?设定SQL删除条件插入操作返回值是否为真?显示"删除成功”关闭数据库程序结束显示连接失败显示"删除失败”是执行删除操作否删除修改01OnSearch()的源程序03OnDelete()的源程序02OnInsert()的源程序04OnUpdate()的源程序程序代码OnSearch()的源程序voidCWhlDlg::OnSearch(){ UpdateData(true); CStringstrConnectionStr; CStringpassword=""; CStringuserid="sa"; //CStringdbname="LwPacs"; 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 { CADORecordsetRecordSet(&(m_conn));//结果集变量,m_conn表示查询前首先建立的连接
CStringsql; sql.Format("select*fromwherePatId='%s'orPatNam='%s'orPatSex='%s'orPatAge='%s'",m_pid,m_pnam,m_psex,m_page); if(!RecordSet.Open(sql,CADORecordset::openQuery))//open即开始执行查找 {AfxMessageBox("数据库检索失败!");} else { CStringstrNameList=""; while(!RecordSet.IsEOF()) { CStringstrName=""; RecordSet.GetFieldValue("PatNam",strName); strNameList+=strName; strNameList+=","; RecordSet.MoveNext(); } AfxMessageBox(strNameList); } m_conn.Close(); }}voidCWhlDlg::OnInsert(){ UpdateData(true);//用文本框中的内容更新成员变量, CStringstrConnectionStr; CStringpassword=""; CStringuserid="sa"; //CStringdbname="lwpacs"; 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 {CStringstrSQL="insertintodialog.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("插入成功!"); else AfxMessageBox("插入失败!"); m_conn.Close(); }}voidCWhlDlg::OnDelete(){ 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("deletefromdialog.dbo.dialogwherePatId='%s'orPatNam='%s'orPatSex='%s'orPatAge='%s'",m_pid,m_pnam,m_psex,m_page);if(m_conn.Execute(sql))//成功删除后返回1 AfxMessageBox("删除成功!"); else AfxMessageBox("删除失败!"); m_conn.Close(); }}voidCWhlDlg::OnUpdate(){ 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.dbo.dialogsetPatNam='%s',PatSex='%s',PatAge='%s'wherePatId='%s'",m_pnam,m_psex,m_page,m_pid);if(m_conn.Execute(sql))//成功修改后返回1 AfxMessageBox("修改成功!"); else AfxMessageBox("修改失败!"); m_conn.Close(); }}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(Cstingconsta,Cstringb)获取一条记录中的某个字段,将a属性对应的值赋给b.*RecordSet.MoveNext()转到下一条记录。*CADODatabase.Close()关闭与数据库的连接。*m_conn.Execute(strSQL)执行指定的SQL语句7.验证运行情况Step1:经过编译、连接和运行程序没有错误.如图。Step2:验证OnSearch()程序,在查询项中的编号输入0001,单击“查询”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金属摆件制作工岗中专业应用考核试卷含答案
- 溶剂脱沥青装置操作工安全强化模拟考核试卷含答案
- 水盆工岗前危机应对考核试卷含答案
- 班组长年度职业发展规划
- 健康宣教单设计
- 2026-2027学年统编版(新教材)四年级语文(上)类文拓展阅读专项练习卷及答案
- 中小学健康教育活动设计
- 2026年山西国际商务职业学院高职单招笔试英语历年参考题库含答案解析
- 2026年宿迁职业技术学院高职单招笔试英语历年参考题库含答案解析
- 2026年大学试题(计算机科学)-IP技术与综合宽带网历年参考题库含答案解析
- 2026年新教材人教版九年级上册英语期中复习:Unit 1-4+期中5套测试卷汇编(含答案)
- 河北省邯郸市2025-2026学年高一上学期期中联考语文试题及答案
- ESC 2026新版心力衰竭管理指南精读
- 2026智联招聘笔试题库及答案
- 2026版《药物临床试验质量管理规范》GCP考试题库(含标准答案+解析)
- EDA技术及应用项目教程 教学大纲
- 中医护理评估
- 2025年度中国展览数据统计报告
- 2026年中考作文押题指导
- 泌尿外科副主任医师述职报告
- T/CCMA 0160-2023非公路洒水车
评论
0/150
提交评论