Sqlhelper

来源:互联网 发布:淘宝现在做什么比较好 编辑:程序博客网 时间:2024/05/18 12:37

什么是sqlhelper?
在学习三层的过程中,我们把对数据库的操作全部写在了DAL层,其中包括数据库的连接,command命令,DataReader等,但是问题是我们只要涉及到数据的访问的操作,我们都需要建立数据库的链接,执行sql命令,为了提高代码的可利用,所以就把对数据库的操作封装到了一个sqlhelper类里面,等我们再执行对数据库的操作的时候直接调用sqlhelper类就可以。

怎么使用?
配置项:

<add key="ConnString" value="Server=.;Database=charge_sys;Uid=sa;Password=123456"/>

实现方法:
1.ExecSelect.有参有返回值,返回值类型为datatable
2.ExecSelectNo.无参有返回值,返回值类型为datatable
3.ExecAddDelUpdate.有参有返回值,返回类型为Boolean
4.ExecAddDelUpdateNo.无参有返回值,返回类型为Boolean

''' <summary>    ''' 执行查询操作,(有参),返回值为datatable类型,参数不限    ''' </summary>    ''' <param name="cmdTxt">参数cmdTxt为所要执行的sql语句,也有存储过程</param>    ''' <param name="cmdType">SqlCommand的执行类型</param>    ''' <param name="paras">查询时的命令参数paras</param>    ''' <returns>整型返回值,以表的方式返回</returns>    ''' <remarks></remarks>    Public Function ExecSelect(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable        '定义适配器        Dim sqlAdapter As SqlDataAdapter        '定义并实例化数据缓冲区对象,即从数据库传入的对象。        Dim adataset As New DataSet        Dim dt As New DataTable        '给cmd赋值        cmd.CommandText = cmdTxt        '执行命令的类型        cmd.CommandType = cmdType        cmd.Connection = conn        cmd.Parameters.AddRange(paras) '参数添加        sqlAdapter = New SqlDataAdapter(cmd)  '实例化adapter        Try            sqlAdapter.Fill(adataset)   '用adapter将dataset填充            dt = adataset.Tables(0)            cmd.Parameters.Clear()        Catch ex As Exception            '错误处理程序,出错则提示            MsgBox(ex.Message, , "数据库操作") '如果出错,返回0        Finally            Call CloseCmd(cmd)        End Try        Return dt    End Function    ''' <summary>    ''' 执行查询操作,(无参),返回值为datatable类型    ''' </summary>    ''' <param name="cmdText">需要执行语句,一般为sql语句,也有存储过程</param>    ''' <param name="cmdType">判断sql语句的类型,一般都不是存储过程</param>    ''' <returns>datatable,查询到的表格</returns>    ''' <remarks></remarks>    Public Function ExecSelectNo(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable        Dim sqlAdapter As SqlDataAdapter        Dim dt As New DataTable   '数据表         Dim ds As New DataSet    '缓存        '给cmd赋值        cmd.CommandText = cmdText        cmd.CommandType = cmdType        cmd.Connection = conn        sqlAdapter = New SqlDataAdapter(cmd)  '实例化adapter        Try            sqlAdapter.Fill(ds)        '用adapter将dataset填充            dt = ds.Tables(0)        Catch ex As Exception            MsgBox(ex.Message, , "数据库操作")   '如果出错,返回0        Finally            Call CloseCmd(cmd)        End Try        Return dt    End Function    ''' <summary>    ''' 执行增删改操作,(有参数)返回值为boolean类型,确认是否执行成功    ''' </summary>    ''' <param name="cmdText" >需要执行行语句,一般是sql语句,也有存储过程</param>    ''' <param name="paras">参数数组,无法确认有多少参数</param>    '''<returns></returns >    ''' <remarks></remarks>    Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As Boolean        '将出入的值,分别为cmd的属性赋值        cmd.Parameters.AddRange(paras)  '将参数传入        cmd.CommandText = cmdText        cmd.CommandType = cmdType        cmd.Connection = conn        '设置连接,全局变量        Try            conn.Open()            Return cmd.ExecuteNonQuery() '执行增删改操作            cmd.Parameters.Clear()   '清除参数        Catch ex As Exception            MsgBox(ex.Message, , "数据库操作") '如果出错,返回0            Return False        Finally            Call CloseConn(conn)            Call CloseCmd(cmd)        End Try    End Function    ''' <summary>    ''' 执行带参数的增删改操作,(无参)返回值为Boolean类型,确认是否执行成功    ''' </summary>    ''' <returns></returns>    ''' <remarks></remarks>    Public Function ExecAddDelUpdateNo(ByVal cmdText As String, ByVal cmdType As CommandType) As Boolean        '为要执行的命令cmd赋值        cmd.CommandText = cmdText        cmd.CommandType = cmdType        cmd.Connection = conn      '设置连接        '执行操作        Try            '如果数据库的连接状态为关闭,则将其打开            If conn.State = ConnectionState.Closed Then                conn.Open()            End If            Return cmd.ExecuteNonQuery()        Catch ex As Exception            MsgBox(ex.Message, , "数据库操作") '如果出错,返回0            Return False        Finally            '关闭连接,释放内存            Call CloseConn(conn)            Call CloseCmd(cmd)        End Try    End Function    ''' <summary>    ''' 关闭连接    ''' </summary>    ''' <param name="conn" >需要关闭的连接</param>    ''' <remarks></remarks>    Public Sub CloseConn(ByVal conn As SqlConnection)        If (conn.State <> ConnectionState.Closed) Then            conn.Close()            conn = Nothing     '不指向源对象        End If    End Sub    ''' <summary>    ''' 关闭命令    ''' </summary>    ''' <param name="cmd">需要关闭的命令</param>    ''' <remarks></remarks>    Public Sub CloseCmd(ByVal cmd As SqlCommand)        If Not IsNothing(cmd) Then            cmd.Dispose()            cmd = Nothing        End If    End Sub

总结:
Sqlhelper就是一个类,封装了对数据库建立连接,执行命名等操作,当我们需要操作数据库时,直接调用就可以,就不必再在DAL里的每一个类里重复写了。

0 0
原创粉丝点击