关闭

一个分层的小工程(医院信息自动化管理系统)----数据层部分(DataAccess)

标签: datasetfunctionexceptionstring数据库class
986人阅读 评论(0) 收藏 举报
         最近完成了一个很小的医院信息自动化管理系统,想在此写写对此次开发的总结。因为是第一次从头到尾的自己开发,所以有些地方写的有点幼稚。如有不正确的地方,还请各位高手指教一二!

         先说说我的整体开发过程的思路。
         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层访问此层出现异常情况,我把没个对象的定义都定义在方法里,使得对象的生命周期很短。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1281次
    • 积分:21
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档