机房重构(1)——SqlHelper

前端之家收集整理的这篇文章主要介绍了机房重构(1)——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

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

原文链接:https://www.f2er.com/vb/257921.html

猜你在找的VB相关文章