加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

机房重构(1)——SqlHelper

发布时间:2020-12-17 07:54:18 所属栏目:百科 来源:网络整理
导读:在机房重构过程中,我们会发现,每个功能的实现都会涉及到数据库的链接访问,代码重复率非常高,耗时耗力,还会使系统出现代码冗余,正所谓费力不讨好。于是,把这些重复的代码抽象成一个类,有需求直接调用就可以了。这时候,SqlHelper就登场了。 SqlHelper

在机房重构过程中,我们会发现,每个功能的实现都会涉及到数据库的链接访问,代码重复率非常高,耗时耗力,还会使系统出现代码冗余,正所谓费力不讨好。于是,把这些重复的代码抽象成一个类,有需求直接调用就可以了。这时候,SqlHelper就登场了。


SqlHelper是一个基于·NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了。

SqlHelper中有两种方法,对数据库的查询和增删改,每种方法都有有参和无参两大类:

以下是SqlHelper的代码:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration      '添加对配置文件的引用,在管理器中相应的类库下同时添加引用

''' <summary>
''' sqlhelper类封装简化对数据库操作代码
''' </summary>
''' <remarks></remarks>
Public Class SqlHelper
    '定义变量
    '获得数据库的连接字符串
    Private ReadOnly strConnection As String = ConfigurationManager.AppSettings("ConnStr")
    '设置连接
    Dim conn As SqlConnection = New SqlConnection(strConnection)
    '定义cmd命令
    Dim cmd As New SqlCommand

    ''' <summary>
    ''' 执行增删改三个操作(有参),返回值为Boolean类型,确认是否执行成功
    ''' </summary>
    ''' <param name=" cmdText ">需要执行的命令</param >
    ''' <param name=" cmdType ">所执行命令的类型(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 Integer
        '将传入的值分别为cmd的属性赋值
        cmd.Parameters.AddRange(paras)      '传入参数
        cmd.CommandType = cmdType           '设置一个值来解释cmdText
        cmd.Connection = conn               '设置连接,全局变量
        cmd.CommandText = cmdText           '设置查询语句

        '执行操作
        Try
            conn.Open()                      '打开连接
            Return cmd.ExecuteNonQuery()     '执行增删改操作
            cmd.Parameters.Clear()           '清除参数
        Catch ex As Exception                '如有异常,返回值为0
            Return 0
        Finally
            Call CloseConn(conn)             '关闭连接        
            Call CloseCmd(cmd)               '关闭命令
        End Try

    End Function

    ''' <summary>
    ''' 执行增删改三个操作(无参)
    ''' </summary>
    ''' <param name=" cmdText ">需要执行语句,一般是sql语句,也有存储过程</param >
    ''' <param name=" cmdType ">所执行命令的类型(sql语句、表或存储过程)</param >
    ''' <returns>Integer,受影响的行数</returns >
    ''' <remarks></remarks>
    Public Function ExecAddDelUpdateNo(ByVal cmdText As String,ByVal cmdType As CommandType) As Integer
        '为要执行的cmd赋值
        cmd.CommandText = cmdText              '设置sql语句
        cmd.CommandType = cmdType              '设置一个值来解释sql语句
        cmd.Connection = conn                  '设置连接

        '执行操作
        Try
            conn.Open()                        '先是打开连接
            Return cmd.ExecuteNonQuery         '执行增删改操作
        Catch ex As Exception
            Return 0
        Finally
            Call CloseConn(conn)
            Call CloseCmd(cmd)
        End Try
    End Function
    ''' <summary>
    ''' 执行查询操作(有参)
    ''' </summary>
    ''' <param name=" cmdText ">需要执行命令</param >
    ''' <param name=" cmdType ">所执行命令的类型</param >
    ''' <param name="paras" >传入的参数</param >
    ''' <returns></returns >
    ''' <remarks></remarks>
    Public Function ExecSelect(ByVal cmdText As String,ByVal paras As SqlParameter()) As DataTable
        Dim sqlAdapter As SqlDataAdapter
        Dim dt As New DataTable
        Dim ds As New DataSet

        cmd.Parameters.AddRange(paras)
        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = conn

        sqlAdapter = New SqlDataAdapter(cmd)    '实例化adapter
        Try
            sqlAdapter.Fill(ds)                 '用adapter将dataset填充
            dt = ds.Tables(0)                   'datatable为dataset的第一个表
            cmd.Parameters.Clear()
        Catch ex As Exception
            MsgBox("查询失败",CType(vbOKOnly + MsgBoxStyle.Exclamation,MsgBoxStyle),"警告")
        Finally
            Call CloseConn(conn)
            Call CloseCmd(cmd)                   '关闭cmd
        End Try

        Return dt
    End Function
    ''' <summary>
    ''' 执行查询操作(无参)
    ''' </summary>
    ''' <param name=" cmdText ">需要执行命令</param >
    ''' <param name=" cmdType ">所执行命令的类型</param >
    ''' <returns>datatable,查询到的表格</returns >
    ''' <remarks></remarks>
    Public Function ExecSelectNo(ByVal cmdText As String,ByVal cmdType As CommandType) As DataTable
        Dim sqlAdapter As SqlDataAdapter
        Dim ds As New DataSet

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = conn
        sqlAdapter = New SqlDataAdapter(cmd)    '实例化adapter
        Try
            sqlAdapter.Fill(ds)                 '用adapter将dataset填充
            Return ds.Tables(0)                 'datatable为dataset的第一个表
        Catch ex As Exception
            Return Nothing
        Finally
            Call CloseConn(conn)
            Call CloseCmd(cmd)                  '关闭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
End Class

快使用小助手为我们的代码瘦瘦身,为系统减减负吧!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读