VB.NET 数据操作封装

前端之家收集整理的这篇文章主要介绍了VB.NET 数据操作封装前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、查询数据集

 '获取查询数据集
    Public Overloads Function QueryCommand(ByRef cmd As sqlCommand,Optional ByRef errMsg As String = "") As DataTable
        errMsg = ""
        Try
            If cmd.Connection Is Nothing Then
                GetsqlConnection()
                cmd.Connection = Me.cn
                Me.opensqlConnection(Me.cn)
            End If
            Dim ds As New DataSet
            Dim ap As sqlDataAdapter = New sqlDataAdapter(cmd)
            ap.Fill(ds,"table01")
            cmd.Dispose()
            ap.Dispose()
            ds.Dispose()
            Return ds.Tables(0)
        Catch ex As Exception
            errMsg = "执行QueryCommand失败" & Chr(13) & ex.Message
            WriteLog("执行QueryCommand失败" & Chr(13) & "sql:" & cmd.CommandText & Chr(13) & ex.Message & Chr(13) & ex.StackTrace)
            Return Nothing
        End Try
    End Function

2、执行SQL查询

Public Function Querysql(sqlstr As String,ByRef errmsg As String) As DataTable
        errmsg = ""
        Dim cmd As New sqlCommand
        Dim errcode As String = TenpayUtil.getTimestamp
        Try
            Me.GetsqlConnection()
            Me.opensqlConnection(Me.cn)
            cmd.Connection = Me.cn
            cmd.CommandText = sqlstr
            errmsg = ""
            Return QueryCommand(cmd)
        Catch ex As Exception
            errmsg = "执行查询出错,错误码:" & errcode
            WriteLog(errmsg & ",详情:" & Chr(13) & ex.Message & Chr(13) & ex.StackTrace)
            Return Nothing
        Finally
            Me.closesqlConnection(Me.cn)
            If cmd IsNot Nothing Then
                cmd.Dispose()
            End If
        End Try
    End Function

3、执行存储过程,无返回数据集

Public Function Execsql(sqlstr As String,ByRef errmsg As String,Optional ByRef sqltran As sqlTransaction = Nothing) As Integer
        errmsg = ""
        Dim cmd As New sqlCommand
        Dim errcode As String = TenpayUtil.getTimestamp
        Try
            If sqltran IsNot Nothing Then
                If sqltran.Connection IsNot Nothing Then
                    cmd.Connection = sqltran.Connection
                    cmd.Transaction = sqltran
                Else
                    Me.GetsqlConnection()
                    Me.opensqlConnection(Me.cn)
                    cmd.Connection = Me.cn
                End If
            Else
                Me.GetsqlConnection()
                Me.opensqlConnection(Me.cn)
                cmd.Connection = Me.cn
            End If
            cmd.CommandText = sqlstr
            errmsg = ""
            Return cmd.ExecuteNonQuery
        Catch ex As Exception
            errmsg = "执行sql出错,错误码:" & errcode
            WriteLog(errmsg & "sql:" & sqlstr & Chr(13) & ",详情:" & Chr(13) & ex.Message & Chr(13) & ex.StackTrace)
            Return 0
        Finally
            If sqltran Is Nothing Then
                Me.closesqlConnection(Me.cn)
            End If
            If cmd IsNot Nothing Then
                cmd.Dispose()
            End If
        End Try
    End Function

4、执行存储过程,有数据集返回、有参数返回

    Sub execProc(procName As String,inputs As Dictionary(Of String,Object),ByRef outputs As Dictionary(Of String,sqlParameter),ByRef errMsg As String,ByRef resTable As DataTable,Optional ByRef sqlTran As sqlTransaction = Nothing)
        '事务优先
        Dim errcode As String = TenpayUtil.getTimestamp
        Dim cmd As sqlCommand
        Dim sqlpara As sqlParameter
        If inputs Is Nothing Then
            errMsg = "inputs不能为Nothing"
            Exit Sub
        End If
        If outputs Is Nothing Then
            errMsg = "outputs不能为Nothing"
            Exit Sub
        End If
        Try
            cmd = New sqlCommand(procName)
            If sqlTran IsNot Nothing Then
                If sqlTran.Connection IsNot Nothing Then
                    cmd.Connection = sqlTran.Connection
                    cmd.Transaction = sqlTran
                Else
                    Me.cn = GetsqlConnection()
                    Me.opensqlConnection(Me.cn)
                    cmd.Connection = Me.cn
                End If
            Else
                Me.cn = GetsqlConnection()
                Me.opensqlConnection(Me.cn)
                cmd.Connection = Me.cn
            End If

            cmd.CommandType = CommandType.StoredProcedure
            '输入参数
            For Each key As String In inputs.Keys
                sqlpara = getsqlParaByObj(key,inputs(key))
                cmd.Parameters.Add(sqlpara)
            Next
            '输出参数
            If outputs IsNot Nothing Then
                For Each key As String In outputs.Keys
                    If outputs(key) IsNot Nothing Then
                        outputs(key).Direction = ParameterDirection.Output
                        cmd.Parameters.Add(outputs(key))
                    End If
                Next
            End If
            cmd.ExecuteNonQuery()
            Dim ds As New DataSet
            Dim ap As sqlDataAdapter = New sqlDataAdapter(cmd)
            ap.Fill(ds,"table01")
            cmd.Dispose()
            ap.Dispose()
            ds.Dispose()
            resTable = ds.Tables(0)
        Catch ex As sqlException
            If ex.Number <> 266 Then
                errMsg = "执行" & procName & "出错,错误码:" & errcode
                WriteLog(errMsg & ",详情:" & Chr(13) & ex.Message & Chr(13) & ex.StackTrace)
            End If

        Finally
            If sqlTran Is Nothing Then
                Me.closesqlConnection(Me.cn)
            End If
        End Try
    End Sub
原文链接:https://www.f2er.com/vb/256807.html

猜你在找的VB相关文章