vb.net中对数据库操作的公共类

在开发中通过总结自己编写了一个关于数据操作的公共类,在实际操作中觉得使用起来非常方便。

实现在module中定义。使用时直接调用即可

这里数据连接采用sqlConnection

一 数据连接

 Public sqlconn As SqlClient.SqlConnection  '全局变量,供整个应用程序使用

  Sub open_conn()
        Dim sqlconnStr As String

        Try
                     sqlconnStr = "workstation id=" + DbHost + ";packet size=4096;data source = " sqlserver主机 " ;persist security info=true;initial catalog = dbName; user id = userName; password =userPwd            sqlconn = New SqlClient.SqlConnection(sqlconnStr)
                 Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        ' MsgBox("数据库连接准备完成")

    End Sub

二 日志记录类

'系统日志类
'该类供应用各个模块调用,记录用户的登陆,退出,对数据库的操作,以及运行过程中系统的异常的记录。
'该类的成员变量为结构体loginfo的一个实例
Public Class cLogWrite
    Private myLogInfo As New logInfo  ’定义的一个结构体类型的公共变量,包含用户,日志类型,主机,和日‘志内容
    Public Sub setUserId(ByVal myId As String)
        myLogInfo.user_id = myId
    End Sub
    Public Sub setLogType(ByVal myType As String)
        myLogInfo.log_type = myType
    End Sub
    Public Sub setLogContent(ByVal myContent As String)
        myLogInfo.log_content = myContent
    End Sub
    Public Sub setLogMachine()
        myLogInfo.log_machine = System.Net.Dns.GetHostName
    End Sub
    Public Sub insertLog()
        Dim mysqlcomm As SqlClient.SqlCommand
        Dim mysql As String
        mysql = "insert into wjb_log(log_datetime,log_type,user_id,log_content,log_machine) values (current_timestamp,'" + myLogInfo.log_type + "','" + myLogInfo.user_id + "','" + myLogInfo.log_content + "','" + myLogInfo.log_machine + "')"
        Try
            sqlconn.Open()
            mysqlcomm = New SqlClient.SqlCommand(mysql, sqlconn)
            mysqlcomm.ExecuteNonQuery()
            sqlconn.Close()
        Catch ex As Exception
            If sqlconn.State.Open = 1 Then
                sqlconn.Close()
            End If
            Throw ex
            Exit Sub
        End Try
    End Sub

End Class

三 数据库操作

'该类为数据处理类,定义了所有对数据库的操作
'该类为所有功能模块提供对数据库数据的操作接口,select、insert、update、delete
Public Class cDataProcess
    '该方法为各功能模块 查询数据库中的数据提供结果集,输入select sql语句,和操作的数据库表,返回相应表的结果集
    Dim myLogWrite As New cLogWrite
    Public Function dataSelect(ByVal strSql As String, ByVal strTableName As String) As DataSet
        Dim mydataset As New DataSet
        Dim mySqlAdapter As SqlClient.SqlDataAdapter

        Try
            sqlconn.Open()
            mySqlAdapter = New SqlClient.SqlDataAdapter(strSql, sqlconn)
            mySqlAdapter.Fill(mydataset, strTableName)
            sqlconn.Close()
            mySqlAdapter = Nothing
            '该处记录查询的日志信息,日志类型为:用户操作,用户内容包括查询语句,查询的表
            'myLogWrite.setLogType("用户操作")
            'myLogWrite.setUserId(userStruc.userid)
            'myLogWrite.setLogMachine()
            'myLogWrite.setLogContent("用户通过 " + strSql + " 查询表 " + strTableName)
            'myLogWrite.insertLog()
        Catch ex As Exception
            sqlconn.Close()
            '该处记录日志信息,日志类型为操作异常
            myLogWrite.setLogType("系统异常")
            myLogWrite.setUserId(userStruc.userid)
            myLogWrite.setLogMachine()
            myLogWrite.setLogContent("" + ex.Message) '"用户查询表 " + strTableName + " 时发生异常:
            myLogWrite.insertLog()

            Throw ex
        End Try
        Return mydataset
    End Function
    '该方法为各功能模块提供插入数据操作,参数为:insert语句和表名
    Public Sub dataInsert(ByVal strSql As String, ByVal strTableName As String)
        Dim mysqlcomm As SqlClient.SqlCommand

        Try
            sqlconn.Open()
            mysqlcomm = New SqlClient.SqlCommand(strSql, sqlconn)
            mysqlcomm.ExecuteNonQuery()
            sqlconn.Close()
            mysqlcomm = Nothing
            '该处记录日志信息,日志类型为:用户操作,用户内容包括insert语句,操作的表
            myLogWrite.setLogType("用户操作")
            myLogWrite.setUserId(userStruc.userid)
            myLogWrite.setLogMachine()
            myLogWrite.setLogContent("用户向表  " + strTableName + " 中插入数据")
            myLogWrite.insertLog()
        Catch ex As Exception
            If sqlconn.State.Open = 1 Then
                sqlconn.Close()
            End If

            '该处记录日志信息,日志类型为操作异常
            myLogWrite.setLogType("系统异常")
            myLogWrite.setUserId(userStruc.userid)
            myLogWrite.setLogMachine()
            myLogWrite.setLogContent("" + escapeZifu(ex.Message, "'")) '用户向表 " + strTableName + " 中插入数据时发生异常:
            myLogWrite.insertLog()
            Throw ex
        End Try
    End Sub
    '该方法为各功能模块提供修改数据操作,参数为:update语句和表名
    Public Sub dataUpdate(ByVal strSql As String, ByVal strTableName As String)
        Dim mysqlcomm As SqlClient.SqlCommand

        Try
            sqlconn.Open()
            mysqlcomm = New SqlClient.SqlCommand(strSql, sqlconn)
            mysqlcomm.ExecuteNonQuery()
            sqlconn.Close()
            mysqlcomm = Nothing
            '该处记录日志信息,日志类型为:用户操作,用户内容包括insert语句,操作的表
            myLogWrite.setLogType("用户操作")
            myLogWrite.setUserId(userStruc.userid)
            myLogWrite.setLogMachine()
            myLogWrite.setLogContent("用户更改表  " + strTableName + "的记录")
            myLogWrite.insertLog()
        Catch ex As Exception
            If sqlconn.State.Open = 1 Then
                sqlconn.Close()
            End If
            '该处记录日志信息,日志类型为操作异常
            myLogWrite.setLogType("系统异常")
            myLogWrite.setUserId(userStruc.userid)
            myLogWrite.setLogMachine()
            myLogWrite.setLogContent("" + escapeZifu(ex.Message, "'")) '用户更改表 " + strTableName + " 中记录时发生异常:
            myLogWrite.insertLog()

            Throw ex
        End Try
    End Sub

    '该类为各功能模块提供删除数据的操作,参数为delete语句,和要删除的表
    Public Sub dataDelete(ByVal strSql As String, ByVal strTableName As String)
        Dim mysqlcomm As SqlClient.SqlCommand

        Try
            sqlconn.Open()
            mysqlcomm = New SqlClient.SqlCommand(strSql, sqlconn)
            mysqlcomm.ExecuteNonQuery()
            sqlconn.Close()
            mysqlcomm = Nothing
            '该处记录日志信息,日志类型为:用户操作,用户内容包括insert语句,操作的表
            myLogWrite.setLogType("用户操作")
            myLogWrite.setUserId(userStruc.userid)
            myLogWrite.setLogMachine()
            myLogWrite.setLogContent("用户删除表  " + strTableName + "中的记录")
            myLogWrite.insertLog()
        Catch ex As Exception
            If sqlconn.State.Open = 1 Then
                sqlconn.Close()
            End If
            '该处记录日志信息,日志类型为操作异常
            myLogWrite.setLogType("系统异常")
            myLogWrite.setUserId(userStruc.userid)
            myLogWrite.setLogMachine()
            myLogWrite.setLogContent("" + escapeZifu(ex.Message, "'")) '用户删除表 " + strTableName + " 中记录时发生异常:
            myLogWrite.insertLog()
            Throw ex
        End Try
    End Sub
    '该函数目的去掉字符串中的符号
    Public Function escapeZifu(ByVal str As String, ByVal zifu As String) As String
        Dim istart As Int32
        istart = str.Trim.IndexOf(zifu)
        While istart <> -1
            str = str.Substring(0, istart) + str.Substring(istart + 1, str.Length - istart - 1)
            istart = str.IndexOf(zifu)
        End While
        Return str
    End Function
End Class


四 调用方法

自己构造sql语句,和相关的表名

通过参数传递进去即可,这样将大大减少数据库操作方面的工作量。

你可能感兴趣的:(vb.net)