sqlHelper的增删改查

当一件事情被重复做了多次后,会想找一种办法来代替自己去做这个重复的动作。写程序也一样。

在程序中,对于重复的部分,如果是完全相同,那我们就会想着将其写成一个方法(过程、函数),放在一个具有权限的需求者都能够得着的地儿。如果需求者在同一项目中,那么就把这个方法写成一个类,如果需求者在同一类中,那么就在本类中单独建一个方法写它。将相同的东西抽象出来,供多用户调用,就是用的抽象的思想。

任何一个系统,都会涉及数据的传输、操作。而数据的操作概括起来不外乎增删改查(CURD),现在的系统随着使用者的增多,越来越多的用户操作,大数据频繁操作。如果采用原来的方式来写,复杂的系统会造成大量赘余的代码

在类上方添加两条引用:

Imports System.Data.sqlClient       '引用sql数据库连接
Imports System.Configuration        '引用配置文件

建立一个操作数据库sqlHelper类,

Public Class sqlHelper

    '获取配置文件中的连接字符串
    Private ReadOnly strsqlConnection As String = ConfigurationManager.AppSettings("sqlConcectStr")
    '定义连接
    Dim connsql As sqlConnection = New sqlConnection(strsqlConnection)
    '定义cmd命令
    Dim cmdsql As New sqlCommand
    '     ///<summary>
    '     ///depiction:<该方法sqlhelper类的初始化>
    '     ///</summary>
    Public Sub New()
        connsql = New sqlConnection(strsqlConnection)
    End Sub


    ''    ///<summary>
    ''    ///depiction:<该方法关闭数据库的连接>
    ''    ///<summary>
    Private Sub ClosesqlConnection()
        '判断数据库连接对象状态是否为断开,如果还没有断,则断开
        If connsql.State <> ConnectionState.Closed Then
            connsql.Close()
        End If
    End Sub


    '     ///<summary>
    '     ///depiction:<该方法关闭数据库命令>
    '     ///</summary>
    Private Sub ClosesqlCommand()
        '如果命令存在,则关闭
        If Not Isnothing(cmdsql) Then
            cmdsql.dispose()   '销毁命令
            cmdsql = nothing
        End If
    End Sub


    '///<summary>
    ''//执行增删改三个操作,(有参)返回值为Boolean类型,确认是否执行成功
    '///</summary>
    '   ///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param>
    '   ///<param name="cmdType">判断sql语句的类型,一般都不是存储过程</param>
    '   ///<returns>
    '   ///<返回Boolean,成功为true,否则为false>
    '   ///</returns>
    Public Function ExecuteAddDelUpdate(ByVal strsql As String,ByVal cmdType As CommandType,ByVal sqlParams As sqlParameter()) As Boolean
        '用传进的参数填充本类自己的cmd对象
        cmdsql.Parameters.AddRange(sqlParams)   '参数传入
        cmdsql.CommandType = cmdType            '
        cmdsql.Connection = connsql             '连接
        cmdsql.CommandText = strsql             '查询语句

        Try
            connsql.open()                     '打开连接
            Return cmdsql.ExecuteNonQuery()    '执行操作
            cmdsql.Parameters.Clear()          '清除参数
        Catch ex As Exception
            Return False
        Finally
            Call ClosesqlConnection()          '关闭连接
            Call ClosesqlCommand()             '结束命令
        End Try

    End Function


    '///<summary>
    '///执行增删改三个操作,(无参)返回值为Boolean类型,确认是否执行成功
    ''///</summary>
    '///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param>
    '   ///<returns>
    '        ///<返回Boolean类型,成功为true,否则为false>
    '///</returns>
    Public Function ExecuteAddDelUpdate(ByVal strsql As String,ByVal cmdType As CommandType) As Boolean
        '用传进的参数填充类自己的cmd对象
        cmdsql.CommandType = cmdType         '将
        cmdsql.Connection = connsql          '建立连接
        cmdsql.CommandText = strsql          '设置查询语句


        Try
            connsql.open()                   '打开连接
            Return cmdsql.ExecuteNonQuery()  '返回sql执行后受影响的行数
        Catch ex As Exception
            Return False
        Finally
            Call ClosesqlConnection()          '关闭连接
            Call ClosesqlCommand()             '结束命令
        End Try


    End Function

    '///<summary>
    ''///执行查询操作,(有参)返回值为DataTable类型
    '///</summary>
    '    ///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param>
    ''   ///<param name="cmdType">判断sql语句的类型,一般都不是存储过程</param>
    '    ///<returns>
    '         ///<返回表>
    '    ///</returns>
    Public Function ExecuteSelect(ByVal strsql As String,ByVal sqlParams As sqlParameter()) As DataTable
        Dim sqlAdapter As sqlDataAdapter
        Dim dtsql As New DataTable
        Dim dssql As New DataSet

        '用传进的参数填充本类自己的cmd对象
        cmdsql.Parameters.AddRange(sqlParams)      '传入参数
        cmdsql.CommandType = cmdType
        cmdsql.Connection = connsql                '建立连接
        cmdsql.CommandText = strsql                '查询语句

        sqlAdapter = New sqlDataAdapter(cmdsql)    '实例化Adapter

        Try
            sqlAdapter.Fill(dssql)               '用Adater将DataSet填充
            dtsql = dssql.Tables(0)              'DataTable为DataSet的第一个表
            cmdsql.Parameters.Clear()            '清除参数
        Catch ex As Exception
            MsgBox("查询失败",CType(vbOKOnly + MsgBoxStyle.Exclamation,MsgBoxStyle),"警告")
        Finally
            Call ClosesqlCommand()
        End Try

        Return dtsql

    End Function


    '///<summary>
    ''//执行查询操作,(无参)返回值为DataTable类型
    ''</summary>
    '    ///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param>
    '    ///<param name="cmdType">判断sql语句的类型,一般都不是存储过程</param>
    '    ///<returns>
    '       ///<返回表>
    '    ///</returns>
    Public Function ExecuteSelect(ByVal strsql As String,ByVal cmdType As CommandType) As DataTable
        Dim sqlAdapter As sqlDataAdapter
        Dim dtsql As New DataTable
        Dim dssql As New DataSet

        '用传进的参数填充类自己的cmd对象
        cmdsql.CommandText = strsql
        cmdsql.CommandType = cmdType
        cmdsql.Connection = connsql
        sqlAdapter = New sqlDataAdapter(cmdsql)         '实例化Adapter

        Try
            sqlAdapter.Fill(dssql)                      '用Adaper将DataSet填充
            dtsql = dssql.Tables(0)                     'DataTable为DataSet的第一个表
        Catch ex As Exception
            MsgBox("查询失败","警告")
        Finally
            Call ClosesqlCommand()
        End Try

        Return dtsql

    End Function

End Class

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...