资源描述
病历管理系统设计与实现
──数据库配置、访问、备份,数据库逻辑设计
摘要:现代化的医院也应该有现代化的管理系统。在科技日益发达的今天,人们的身体健康也在不断受到重视。因此,医院进行现代化管理就变得尤为重要。这里,我们以一个典型的医院病历管理系统的开发为例,来讲述如何建立一个实用的病历管理系统。本文介绍毕业设计课题的选题背景和意义,相关的研究和开发的比较和综述,研究开发的过程,以及设计思路和实现细节的考虑,最后给出了作者在毕业设计过程中的体会。
关键字:病历管理系统;数据库;病人;药物;实体关系图
Abstract:Alsoshouldtherebethemodernizedmanagementsysteminthemodernizedhospital. Thebodyhealthofpeoplealsoconstantlysufferedattachingimportancetotodayadvancedincreasinglyatthescienceandtechnology.
Thereforethehospitalcarriesonthemodernizemanagingtobecometosuchanextentthatblamesforimportant. Here, ourdevelopmentofthetypicalhospitalphysicalmedicinemanagementsystemwithistheexample, andtellsabouthowtobuildapracticalhospitalphysicalmedicinemanagementsystem.
Selectedtopicbackgroundandthemeaningofthistext, article, etc. introductiongraduationprojectsubject, thecomparisonandsummarizingofresearchanddevelopmentbeingmutuallyrelated, thecourseofresearchanddevelopment, aswellasdesigningthetrainofthoughtwithrealizingthinkingoverofdetails, andfinallygivingouttherealizationthatauthorisinthegraduationprojectcourse.
Keywords:CaseHistoryMS;database;patient;medicine;E-R
第1章 绪论
1.1 研究课题的背景
现代计算机技术的进步,使医院信息化已经成为现代医院改革与发展的重要方向。由于信息自动化的日趋重要,使利用计算机提高医院的日常工作效率已经成为各医院改革的迫切需求。
1.2 研究思路和工作计划
正如研究任何其它软件项目一样,我做的毕业设计也经历了从选题,调研,熟悉开发环境,实验关键技术,查找类似的相关系统的资料;系统概要设计,数据库结构设计,功能模块开发,功能模块测试,系统调试和系统试运行和修改。下面的流程图反映了我们的基本的思路和过程。
概要设计
数据库的结构设计
功能模块开发
功能模块测试
系统调试
定题
调查研究
资料查询
开发环境熟悉
研究关键技术
系统试运行和修改
第2章ASP.NET的开发环境及配置
此次设计用ASP.NET开发,SQLSERVER 2008作为后台数据库,在Microsoft的不同版本Windows中有不同版本的服务器。在实际设计中我使用的是Windows 7 + IISEXPRESS。
2.1 IISEXPRESS新特点
简练并且易于安装(文件大小不到10兆而且安装速度相当快)。在VisualStudio中不需要管理员权限即可启动和调试程序。提供了完整的Web服务器功能—包括SSL, URL重写,多媒体支持和所有其他的IIS 7.x模块。它的可扩展模型和web.config配置结构和IIS 7.x是一样的。它可以和IISWeb服务器还有ASP.NET开发服务器同时运行在同一台机器上(他们不会相互冲突)。它支持WindowsXP及更高版本的操作系统—在所有操作系统平台上提供了完整的IIS 7.x功能集。
IISExpress(跟ASP.NET开发服务器一样)可以快速地从硬盘上的某个文件夹上启动网站程序。它不需要任何注册或配置步骤。在网站开发过程中,这个特性使启动和运行网站显得相当便捷。
2.2 ASP.NET的优点
[1]可管理性:ASP.NET使用基于文本的、分级的配置系统,简化了将设置应用于服务器环境和Web应用程序的工作。因为配置信息是存储为纯文本的,因此可以在没有本地管理工具的帮助下应用新的设置。配置文件的任何变化都可以自动检测到并应用于应用程序。
[2]安全:ASP.NET为Web应用程序提供了默认的授权和身份验证方案。开发人员可以根据应用程序的需要很容易地添加、删除或替换这些方案。
[3]易于部署:通过简单地将必要的文件复制到服务器上,ASP.NET应用程序即可以部署到该服务器上。不需要重新启动服务器,甚至在部署或替换运行的已编译代码时也不需要重新启动。
[4]增强的性能:ASP.NET是运行在服务器上的已编译代码。与传统的ActiveServerPages (ASP)不同,ASP.NET能利用早期绑定、实时(JIT)编译、本机优化和全新的缓存服务来提高性能。
[5]灵活的输出缓存:根据应用程序的需要,ASP.NET可以缓存页数据、页的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新。
[6]国际化:ASP.NET在内部使用Unicode以表示请求和响应数据。可以为每台计算机、每个目录和每页配置国际化设置。
[7]移动设备支持:ASP.NET支持任何设备上的任何浏览器。开发人员使用与用于传统的桌面浏览器相同的编程技术来处理新的移动设备。
[8]扩展性和可用性:ASP.NET被设计成可扩展的、具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet信息服务 (IIS)和ASP.NET运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。
[9]跟踪和调试:ASP.NET提供了跟踪服务,该服务可在应用程序级别和页面级别调试过程中启用。可以选择查看页面的信息,或者使用应用程序级别的跟踪查看工具查看信息。在开发和应用程序处于生产状态时,ASP.NET支持使用 .NETFramework调试工具进行本地和远程调试。当应用程序处于生产状态时,跟踪语句能够留在产品代码中而不会影响性能。
[10]与.NETFramework集成:因为ASP.NET是 .NETFramework的一部分,整个平台的功能和灵活性对Web应用程序都是可用的。也可从Web上流畅地访问 .NET类库以及消息和数据访问解决方案。ASP.NET是独立于语言之外的,所以开发人员能选择最适于应用程序的语言。另外,公共语言运行库的互用性还保存了基于COM开发的现有投资。
[11]与现有ASP应用程序的兼容性:ASP和ASP.NET可并行运行在IISWeb服务器上而互不冲突;不会发生因安装ASP.NET而导致现有ASP应用程序崩溃的可能。ASP.NET仅处理具有.aspx文件扩展名的文件。具有.asp文件扩展名的文件继续由ASP引擎来处理。然而,应该注意的是会话状态和应用程序状态并不在ASP和ASP.NET页面之间共享。
2.3 ASP.NETWeb应用程序的布局
ASP.NET应用程序被定义为可从Web服务器上的虚拟目录及其子目录中调用的所有文件和可执行码。其中可以包含网页(.html文件)、Web表单页面(.aspx文件)、Web表单用户控件(.ascx文件)、XMLWeb服务(.asmx文件)、HTTP处理程序、HTTP模块和其他文件(如图像和配置文件)。现在使用的所有与Microsoft .NETFramework版本相关的脚本映射也都是ASP.NET应用程序的一部分。ASP.NET应用程序必须位于IIS虚拟目录(也称为应用程序根目录)中。ASP.NET应用程序可包含已编译的程序集(通常是包含业务逻辑的DLL文件)、用于存储预编译代码的已知目录(目录名总是 \Bin)、存储在基于文本的、易读的Web.config文件中的配置设置、页、服务器控件,以及XMLWeb服务。
服务器中任何不与其他应用程序共享的预编译代码必须存储在应用程序的 \Bin目录中。它是应用程序的本地程序集缓存。Web.config文件在基于XML的文本文件中存储应用程序级的配置文件。这意味着可以使用任意标准的文本编辑器或XML分析器来创建它们,而且它们是可读的。如果不在应用程序根目录中包含Web.config文件,则配置设置由Machine.config文件中整个服务器的配置文件来确定。安装 .NETFramework时,会安装Machine.config文件的某个版本。
下图显示了ASP.NET应用程序文件系统布局的示例。
图2-3 ASP.NET应用程序文件系统布局
本图中的应用程序包括\Bin目录中的两个DLL文件、一个Default.aspx页,一个名为Menu.ascx的用户控件、一个名为MyWebService.asmx的XMLWeb服务以及一个Global.asax文件。另外,该应用程序是使用下列三个配置文件配置的:系统根目录中计算机级别的Machine.config文件、C:\Inetpub\wwwroot目录中站点级别的Web.config文件和应用程序根目录中应用程序级别的Web.config文件。当站点的Web.config文件覆盖Machine.config文件中的设置时,在应用程序根目录中存储的配置设置将覆盖站点的Web.config文件和Machine.config文件中的设置。
2.4 VisualStudio介绍
MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括MicrosoftWindows、WindowsMobile、WindowsCE、.NETFramework、.NETCompactFramework和MicrosoftSilverlight及WindowsPhone。
VisualStudio 2010的新功能:
(1)C# 4.0中的动态类型和动态编程;
(2)多显示器支持;
(3)使用VisualStudio 2010的特性支持TDD;
(4)支持Office;
(5)QuickSearch特性;
(6)C++ 0x新特性;
(7)IDE增强;
(8)使用VisualC++ 2010创建Ribbon界面;
(9)新增基于.NET平台的语言F#;
2.5 ASP.NET相关技术
在这里我们将简单介绍此次毕业设计所用到的ASP.NET的相关技术。
2.5.1 Session对象
Session对象的功能和Application对象一样,都是用来储存跨网页程序的变量或是对象,但Session对象和Application对象变量有些特性不太一样。Session对象变量只针对单一网页使用者,也就是说各个联机的机器有各自的Session对象变量,不同的联机无法互相存取。Application对象变量中止于停止IIS服务,但是Session对象变量终止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定Session变量对象的有效时间时,Session对象变量就会消失。Session对象正确的对象类别名称是HttpSessionState,和Application对象一样是属于Page对象的成员;所以可以直接使用。Session对象的使用方式和Application对象变量相当类似,其使用语法如下:
Session("变量名")="内容"
Session也可以存放COM组件,其使用语法如下:
Session("名称")=Server.CreateObject(ProgId)
下表为Session对象常用的属性:
表2.2 Session对象常用的属性
属性
说明
形态
All
传回全部的Session对象变量到一个数值。
Object()
Count
传回Session对象变量的个数
Integer
Item
以索引值或变量名称来传回或设定Session
Item(String)AsObject
对象变量的内容。
TimeOut
传回或设定Session对象变量的有效时间,当联机使用者超过有效时间没有动作Session对象便失效。默认值为20分钟。
Integer
下表为Session对象常用方法:
表2.3 Session对象常用方法
方法
说明
语法
Add
新增一个Session对象变量。
Add(ByValnameAsString, ByValvalueAsObject)
Clear
清除所有的Session对象变量。
Clear()
Remove
以变量名称来移出变量
Remove(ByValnameAsString)
RemoveAll
清除所有的Session对象变量
RemoveAll()
Session对象变量最常应用在存放使用者的状态。例如在使用者登入的页面上,我们可以将代表使用者登入网页的成功与否状态储存到一个变量中,然后在其它网页加入判断使用者是否登入成功与否的程序代码。如果登入成功才可以浏览某些网页,如果登入失败则限制或拒绝使用者的浏览。
2.5.2 Web.config配置
ASP.NET配置文件是基于XML的文本文件(每个都命名为web.config),可出现在ASP.NETWeb应用程序服务器上的任何目录中。每个web.config文件将配置设置应用到它所在的目录和它下面的所有虚拟子目录。子目录中的设置可随意重写或修改在父目录中指定的设置。根配置文件——WinNT\Microsoft.NET\Framework\<version>\config\
machine.config,提供整台计算机的默认配置设置。ASP.NET配置IIS阻止对web.config文件进行直接的浏览器访问,以确保这些文件的值不能成为公共的(试图访问这些文件将导致ASP.NET返回 403 : AccessForbidden)。
运行时,ASP.NET使用这些web.config配置文件,针对传入的每个URL目标请求分层计算唯一的设置集合(这些设置只计算一次,然后在后面的请求间被缓存起来;ASP.NET自动监视文件更改,如果有任何配置文件发生更改时则使缓存无效)。
如果web.config文件位于某个站点(如“Inetpub\wwwroot”)的根目录下,其配置设置将应用于该站点的所有应用程序。注意,给定目录或应用程序根中web.config文件的存在是完全可选的。如果web.config文件不存在,该目录的所有配置设置将自动从父目录继承。
配置节处理程序和节
web.config文件是基于XML的文本文件,它可以包含标准的XML文档元素(包括格式正确的标记、注释、文本、cdata等等)。该文件的编码格式可以为ANSI、UTF-8 或Unicode;系统自动检测编码。web.config文件的根元素总是<configuration>标记。ASP.NET和最终用户设置因此封装在该标记中,如下所示:
<configuration>
<!-Configurationsettingswouldgohere. -->
</configuration>
<configuration>标记通常包含三种不同类型的元素,[1]配置节处理程序声明,[2]配置节组,[3]配置节设置。
配置节处理程序——ASP.NET配置结构在web.config文件中的文件格式或支持的设置方面不进行任何假设。相反,它将处理web.config数据的任务委托给配置节处理程序,即实现IConfigurationSectionHandler接口的 .NET框架类。单个IConfigurationSectionHandler声明只需要出现一次,通常是在machine.config文件中。子目录中的web.config文件自动继承此声明。配置节处理程序通过使用嵌套在<configSections>标记中的节标记指令在web.config文件中声明。节标记可进一步由节组标记限定,将它们组织为逻辑组(参见下文)。每个节标记标识一个表示特定配置数据节的标记名和一个处理该节的关联IConfigurationSectionHandler类。
配置节组——ASP.NET配置允许出于组织目的对节进行分层分组。<sectionGroup>标记可显示在<configSections>标记的内部或其他<sectionGroup>标记的内部。例如,ASP.NET节处理程序全都显示在<system.web>节组中。
配置节——ASP.NET配置设置在配置标记节中表示,同时嵌套在<configuration>标记(和可选的节组标记)中。对于每个配置节,必须在config层次结构中定义适当的节处理程序。例如,在下面的示例中,标记<httpModules>是定义HTTP模块配置数据的配置节。System.Configuration.HttpModulesConfigurationHandler类负责在运行时解释<httpModules>标记中包含的内容。注意,节处理程序定义和节必须具有相同的节组限定符(此处为<system.web>)。还应注意,标记名区分大小写,必须按所显示的原样键入。ASP.NET的各种属性和设置也区分大小写,并且配置运行时不检查大小写是否不匹配。
标准ASP.NET配置节
ASP.NET提供了若干标准配置节处理程序,用于处理web.config文件中的配置设置。下表提供了有关这些节的简短说明以及指向更多信息的指针。
节名
说明
<httpModules>
负责配置应用程序中的HTTP模块。HTTP模块参与处理应用程序中的每个请求。常用的用途包括安全性和记录。
<httpHandlers>
负责将传入的URL映射到IHttpHandler类。子目录不继承这些设置。还负责将传入的URL映射到IHttpHandlerFactory类。<httpHandlers>节中表示的数据由子目录分层继承。
<sessionState>
负责配置会话状态HTTP模块。
<globalization>
负责配置应用程序的全局化设置。
<compilation>
负责配置ASP.NET使用的所有编译设置。
<trace>
负责配置ASP.NET跟踪服务。
<processModel>
负责配置IISWeb服务器系统上的ASP.NET进程模型设置。
<browserCaps>
负责控制浏览器功能组件的设置。
表2.4 标准配置节
Web.config文件
<?xmlversion="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<!--动态调试编译
设置compilationdebug="true" 以启用ASPX调试。否则,将此值设置为false将提高此应用程序的运行时性能。
设置compilationdebug="true" 以将调试符号(.pdb信息)插入到编译页中。因为这将创建执行起来较慢的大文件,所以应该只在调试时将该值设置为true,而在所有其他时候都设置为false。-->
<compilation
defaultLanguage="c#"
debug="true"/>
<!--自定义错误信息
设置customError模式值可以控制应向
用户显示用户友好错误信息而不是错误详细信息(包括堆栈跟踪信息):
“On”始终显示自定义(友好的)信息;“Off”始终显示详细的ASP.NET错误信息。“RemoteOnly”只对不在本地Web服务器上运行的用户显示自定义(友好的)信息。-->
<customErrors
mode="RemoteOnly" />
<!--身份验证
此节设置应用程序的身份验证策略。可能的模式是“Windows”、“Forms”、
“Passport”和“None” -->
<authenticationmode="Windows" />
<!--应用程序级别跟踪记录
应用程序级别跟踪在应用程序内为每一页启用跟踪日志输出。
设置traceenabled="true"以启用应用程序跟踪记录。如果pageOutput="true",则跟踪信息将显示在每一页的底部。否则,可以通过从Web应用程序根浏览 "trace.axd" 页来查看应用程序跟踪日志。-->
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"/>
<!--会话状态设置
默认情况下,ASP.NET使用cookie标识哪些请求属于特定的会话。
如果cookie不可用,则可以通过将会话标识符添加到URL来跟踪会话。
若要禁用cookie,请设置sessionStatecookieless="true"。-->
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="datasource=127.0.0.1;userid=sa;password="
cookieless="false"
timeout="20" />
<!--全球化
此节设置应用程序的全球化设置。-->
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8" />
</system.web>
<appSettings>
<!--数据库联接,如果更换数据库时只要修改这里就可使程序正常运行-->
<addkey="strConnection" value="datasource=LUKE;initialcatalog=BookShop;persistsecurityinfo=False;userid=sa;" />
<addkey="Manager" value="hugo" />
</appSettings>
</configuration>
2.6 B/S模式及其特点
B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。把传统C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系。其优点有:首先,它简化了客户端。它无需象C/S模式那样在不同的客户机上安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便、网络结构更加灵活。其次,它简化了系统的开发和维护。系统的开发者无须再为不同级别的用户设计开发不同的客户应用程序了,只需把所有的功能都实现在Web服务器上,并就不同的功能为各个组别的用户设置权限就可以了。各个用户通过HTTP请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。现代企业面临着日新月异的竞争环境,对企业内部运作机制的更新与调整也变得逐渐频繁。相对于C/S,B/S的维护具有更大的灵活性。再次,它使用户的操作变得更简单。对于C/S模式,客户应用程序有自己特定的规格,使用者需要接受专门培训。而采用B/S模式时,客户端只是一个简单易用的浏览器软件。无论是决策层还是操作层的人员都无需培训,就可以直接使用。B/S模式的这种特性,还使MIS系统维护的限制因素更少。最后,B/S特别适用于网上信息发布,使得传统的MIS的功能有所扩展。这是C/S所无法实现的。而这种新增的网上信息发布功能恰是现代企业所需的。这使得企业的大部分书面文件可以被电子文件取代,从而提高了企业的工作效率,使企业行政手续简化,节省人力物力。
第3章系统分析设计
3.1 系统的基本目标
近几年来,随着计算机的普及和网络技术的广泛应用,当今社会正快速向信息化社会前进,信息自动化的作用越来越显得重要,从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。因此,在做一个病历管理系统。
3.2 总体框架设计
根据病历管理系统的逻辑功能划分,本系统一共有三个主要模块,分别是管理员,医生,病人
3.3 系统总体页面设计
3.3.1 系统功前台用户功能流程图:
病历管理系统
管理员
医生
病人
对医生信息
病历管理
修改
添加
统计病症率
删除
查看
修改密码
打印操作
(图3-1)
3.3.2 系统后台管理员功能流程图:
后
台
管
理
统计病症概率
病历管理
医生信息
(图3-2)
3.3 系统的网站需求分析
根据医院病历管理系统的逻辑功能划分,本系统一共有三个主要模块,分别是管理员,医生,病人
1. 管理员
实现功能模块包括:
(1.) 对医生信息(基本信息、学历及所属科室)进行管理(有添加、删除、查询、修改),其中查询可以按姓名、工号、科室进行查询
(2.)病历管理(删除、查询、修改),其中病历包括病人的基本信息、病症情况、病症结论(做成可选择的,例如是感冒、肠炎、胃炎、心脏病等)及所用的药物(做成可选择,例如青霉素、板蓝根等药品及相关的编号及规格)、主治医生及就诊日期,查询包括按患者的姓名(要考虑相同姓名该怎么办)、编号、科室、主治医生的姓名进行查询(要考虑同一个人来看多次病的情况)
(3)统计病症概率(某种病在某段时间的发病率)
2. 医生
(1).对病历进行添加、查询,医生能对个人信息(尤其是密码)进行修改,其中查询包括按患者的姓名(要考虑相同姓名该怎么办)、编号、主治医生的姓名进行查询(要考虑同一个人来看多次病的情况)
3.病人
能够查看自己的信息及能够修改密码,能够对病历进行查询、打印操作(考虑病人有相同的名字的情况)
3.4 SQL语言简介
SQL(StructuredQueryLanguage,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、 "Insert"、 "Update"、 "Delete"、 "Create"和 "Drop"常常被用于完成绝大多数数据库的操作。MSSQLServer就是用的Transact- SQL。
SQL语言有着非常突出的优点,主要是:
n 非过程化语言
n 统一的语言
n 是所有关系数据库的公共语言
SQL语句:SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:
DML(DataManipulationLanguage,数据操作语言):用于检索或者修改数据;
DDL(DataDefinitionLanguage,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;
DCL(DataControlLanguage,数据控制语言):用于定义数据库用户的权限。
DML组可以细分为以下的几个语句:
SELECT:用于检索数据;
INSERT:用于增加数据到数据库;
UPDATE:用于从数据库中修改现存的数据;
DELETE:用于从数据库中删除数据。
DDL语句可以用于创建用户和重建数据库对象。下面是DDL命令:
CREATETABLE,ALTERTABLE,DROPTABLE,CREATEINDEX,DROPINDEX
第4章系统的详细设计──数据库配置、访问、备份
4.1 数据库配置
Webconfig文件:
<configuration>
<appSettings>
<addkey="cn" value="server=NAMI\MSSQLSERVER2;
database=casehistoryms;uid=desler;pwd=123456;"/>
</appSettings>
<connectionStrings/>
<system.web>
4.2 通过ADO.NET技术访问数据的技巧
4.2.1 ADO和ADO.Net简介
ActiveXDataObject(简称ADO)是微软提供的数据访问模型,依据这个模型可很轻松的操作数据库。同时ADO受到微软所以开发工具的支持,所以无论是VB、VC、ASP开发都可以使用。所以开发ASP数据库应用程序,只需在代码中嵌入SQL(结构化查询语言)命令,用户就可以很轻松的输入、更新、和删除后台的数据库记录。当用户端的浏览器填好表单所要求输入的资料并按下“Submit(确认)”按钮后,经过互联网、内联网传送HTTP请求到WEB服务器,该请求在WEB服务器执行一个表单所指定的ActiveServerPages程序(后缀名为.ASP的文档)。从ADO.Net不仅仅是ADO的一个简单升级,它是微软.NET战略的一个重要组成部分,那么到底和以前有什么不同呢?
以前在ADO中进行数据处理的主要方法是OLEDB,现在在ADO.Net中也是如此。但是微软为了更好地支持目前广泛使用的两个数据库Oracle和SQLServer对OLEDB做了专门的扩展,它们分别是OracleClient和SQLClient类,当然由于数据库产品很多,为了便于以前的OLEDB的程序升级,故也对OLEDB本身做了升级处理。在.Net中表现为OLEDB类-SQLClient。ADO.NET并不是ADO的升级版本,它是全新的面向对象模型。比ADO更适应于分布式及Internet等大型应用程序环境,为了多人同时存取更具扩展性,ADO.NET的数据存取采用的是离线存取模式,可说是专门为.NET平台设计的数据存取结构。它具有支持OLEDB、离线存取、数据交换格式为XML的特点。但是它在VisualStudio 2010上的应用开发实在是太困难了,过于繁琐的细节及深奥的理论知识,恐怕你不经过长时间的摸索和实践是摸不着门的。比起惜日的ADO的轻松应用来真是叫苦连天。可是ADO年代一去不复返了。
4.2.2 数据库访问技术
那么在VisualStudio 2010中怎样应用ADO.NET呢?现在接合VisualStudio 2010中C#.NET强大的类开发功能。现在我们在公共类库中定义了三个公共方法来执行数据库操作。启动VisualStudio 2010。在新建项目中选择C#.Net项目,在模板中选择类库,在名称中输入类库文件名如DataAccess确定,则进入类库开发环境中,把Class1换名为DataAccess.在类名最上面写上UsingSystem.Data ;UsingSystem.Data.SqlClient;二条引用生句。这里我们引用了有关ADO.NET的命名空间和空值来源的命名空间。微软为了提高ADO.NET的性能,它把ADO.NET的访问SQLServer数据库。为了提高读写数据的性能,加快读写速度,Microsoft把读写数据分为二种。一种是只读数据,通过SqlDataReader实现。SqlDataReader是通过执行查询命令SqlCommand来完成的。而SqlCommand有二个重要的属性。一个是连接一个连接对象的Connection属性和一条查询命令的CommandText属性。SqlCommand的执行命令可以返回一个SqlDataReader。下面我们把要访问的表作为输入参数传入,最后返回一个SqlDataReader。完整的代码如下:
publicSqlDataReaderGetDataReader(stringstrcom,stringtables)
{ stringstrcon="userid=sa;password=;initialcatalog=SBXT;data source=localhost;ConnectTimeout=30";
SqlConnectionsqlconn=newSqlConnection(strcon);
sqlconn.Open();
SqlCommandmycom=newSqlCommand(strcom,sqlconn);
SqlDataReaderdr=mycom.ExecuteReader();
sqlconn.Close();
returndr;}
publicvoidExecuteNonQuery(stringstrcom)
{ stringstrcon="userid=sa;password=;initialcatalog=SBXT;data source=localhost;ConnectTimeout=30";
SqlConnectionsqlconn=newSqlConnection(strcon);
sqlconn.Open();
SqlCommandmycom=newSqlCommand(strcom,sqlconn);
mycom.ExecuteNonQuery();
sqlconn.Close();}
SQLServer数据库通过SQLConnection、SqlCommand1、SqlDataAdapter、DataSet、DataView等几个主要的数据访问对象来访问数据。实现方法如下:
publicDataSetExecuteDataSet(stringstrcom,stringtables )
{ stringstr1="userid=sa;password=;initialcatalog=SBXT;data source=localhost;ConnectTimeout=30";
SqlConnectioncon=newSqlConnection(str1);
con.Open();
SqlDataAdaptercomm= newSqlDataAdapter(strcom,con);
DataSetds=newDataSet();
展开阅读全文