软讯网络 > 冲浪宝典 > 网络资源 > 一个分层的小工程(医院信息自动化管理系统)----数据层部分(DataAccess)
【标 题】:一个分层的小工程(医院信息自动化管理系统)----数据层部分(DataAccess)
【关键字】:
----,DataAccess
【来 源】:http://blog.csdn.net/nighthawknet/archive/2006/06/23/824829.aspx
一个分层的小工程(医院信息自动化管理系统)----数据层部分(DataAccess)
最近完成了一个很小的医院信息自动化管理系统,想在此写写对此次开发的总结。因为是第一次从头到尾的自己开发,所以有些地方写的有点幼稚。如有不正确的地方,还请各位高手指教一二!
先说说我的整体开发过程的思路。
1.根据系统的预期功能,首先创建好数据库。现在整个工程已经快完工了,总的感觉是数据库建立的好坏十分重要。
2.写好DataAccess(数据层)。代码准确,不能为后来的开发带来麻烦。
3.根据具体的功能写出BusinessRules(业务层)。本人的思路是从DataAccess中返回一个DataSet,然后在具体的业务层中的功能块中接受到这个DataSet,在BusinessRules中建立一个DataTable,把DataSet中的数据填充到DataTable中,然后返回DataTable.以供表示层来使用它需要的DataTable。
4.根据预先想到的功能返回到界面上的设计。由于本人的美工很差,所以界面很一般,只是拖拖控件。
预期的功能有3部分,分别是:门诊管理,医院设备管理和药房管理。
从3部分的功能需求出数据库中的实体:员工,病人,设备,部门,科系,病房,病床,门诊业务。与这些实体分别相关的属性表和关系表。现在数据库建好了!那么开始写工程的数据层(DataAccess),程序如下:
1.一个得到连接字符串的类。
Public Class conStr
Private conStr As String
Public Sub New()
conStr = "server=localhost;database=The Hospital Message Manager;user id=sa;password=;"
End Sub
Public Function getConStr() As String
getConStr = conStr
End Function
End Class
2.一个有返回植操作的数据库操作类,即查询。
Imports System.Data.SqlClient
Public Class QueryData
‘此函数是一个对SQL语句的操作。
Public Function QueryDataInSentence(ByVal sqlStr As String) As DataSet
Dim constr As New conStr
Dim adpter As New SqlDataAdapter
Dim ds As New DataSet
Dim com As New SqlCommand
Dim con As New SqlConnection(constr.getConStr)
adpter.SelectCommand = com
adpter.SelectCommand.Connection = con
adpter.SelectCommand.CommandType = CommandType.Text
adpter.SelectCommand.CommandText = sqlStr
con.Open()
Try
adpter.Fill(ds)
Return ds
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Function
’此函数是个对存储过程的操作。
Public Function QueryDataInProc(ByVal sqlProcName As String) As DataSet
Dim conStr As New conStr
Dim adpter As New SqlDataAdapter
Dim ds As New DataSet
Dim com As New SqlCommand
Dim con As New SqlConnection(conStr.getConStr)
adpter.SelectCommand = com
adpter.SelectCommand.Connection = con
adpter.SelectCommand.CommandType = CommandType.StoredProcedure
adpter.SelectCommand.CommandText = sqlProcName
con.Open()
Try
adpter.Fill(ds)
Return ds
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Function
End Class
3.一个无返回值的数据操作类,即填加,删除和修改。因为程序的需要,这个类中的方法有个Boolean的返回值。
Imports System.Data.SqlClient
Public Class UnQueryData
‘此函数是一个对SQL语句的操作。
Public Function ChangeInSentence(ByVal sqlStr As String) As Boolean
Dim constr As New conStr
Dim com As New SqlCommand
Dim con As New SqlConnection(constr.getConStr)
com.Connection = con
com.CommandType = CommandType.Text
com.CommandText = sqlStr
con.Open()
Try
com.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Function
’此函数是个对存储过程的操作。
Public Function ChangeInProc(ByVal sqlProcName As String) As Boolean
Dim constr As New conStr
Dim com As New SqlCommand
Dim con As New SqlConnection
com.Connection = con
com.CommandType = CommandType.StoredProcedure
com.CommandText = sqlProcName
con.Open()
Try
com.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Function
End Class
数据层的操作主要注意每个sqlClient对象的生命周期,为了不使BusinessRules层访问此层出现异常情况,我把没个对象的定义都定义在方法里,使得对象的生命周期很短。