vb.net数据库连接处理


Imports System.Data
Imports System.Data.SqlClient

Namespace DA
    Public Class DBConnector
        Dim _connectionString As String
        Dim _DBConnection As System.Data.SqlClient.SqlConnection

        Public Sub New(ByVal connectionString As String)
            _connectionString = connectionString
        End Sub

        Property DBConnection() As IDbConnection
            Get
                Return _DBConnection
            End Get
            Set(ByVal value As IDbConnection)
                _DBConnection = value
            End Set
        End Property

        Public Sub GetDBConnection()

            Try
                If _DBConnection Is Nothing Then
                    _DBConnection = New System.Data.SqlClient.SqlConnection(_connectionString)
                End If
            Catch ex As Exception
                Throw ex

            End Try
          

        End Sub

        Public Sub OpenDBConnection()
            Try
                If _DBConnection Is Nothing Then
                    GetDBConnection()
                End If
                If _DBConnection.State <> ConnectionState.Open Then
                    _DBConnection.Open()

                End If
            Catch ex As Exception
                _DBConnection.Close()
                Throw ex

            End Try
        End Sub
        Public Sub CloseDBConnection()
            Try
                If Not _DBConnection Is Nothing Then
                    If _DBConnection.State = ConnectionState.Open Then
                        _DBConnection.Close()
                    End If
                End If
            Catch ex As Exception

            End Try
        End Sub
    End Class
End Namespace

 


Imports System.Data
Imports System.Data.SqlClient
Imports GatesU.MES.DA

Namespace DA

 


    Public Class DBTransaction


        Dim _DBConnector As GatesU.MES.DA.DBConnector
        Dim _DBTransaction As System.Data.IDbTransaction
        Dim _TimeOut As Integer = 0
        Dim _isTransaction As Boolean = False

        Public Sub New(ByVal connectionString As String)
            _DBConnector = New DBConnector(connectionString)

        End Sub
        Public Property DBTransaction() As IDbTransaction
            Get
                Return _DBTransaction

            End Get
            Set(ByVal value As IDbTransaction)
                _DBTransaction = value

            End Set
        End Property

        Public Property TimeOut() As Integer
            Get
                Return _TimeOut

            End Get
            Set(ByVal value As Integer)
                _TimeOut = value

            End Set
        End Property

        Public Sub BeginTransaction()
            Try

                If _DBConnector.DBConnection Is Nothing Then
                    _DBConnector.GetDBConnection()
                End If
                If _DBConnector.DBConnection.State <> ConnectionState.Open Then
                    _DBConnector.OpenDBConnection()
                End If

                _DBTransaction = _DBConnector.DBConnection.BeginTransaction(IsolationLevel.ReadUncommitted)
                _isTransaction = True

            Catch ex As Exception
                _DBConnector.CloseDBConnection()
                _isTransaction = False

            End Try

        End Sub
        Public Sub CommitTransaction()

            Try
                
                _DBTransaction.Commit()

 

            Catch ex As Exception
                _DBTransaction.Rollback()
            Finally

                _DBConnector.CloseDBConnection()
                _DBTransaction.Dispose()
                _isTransaction = False


            End Try
        End Sub
        Public Sub RollbackTransaction()
            If Not _DBTransaction Is Nothing Then
                _DBTransaction.Rollback()
                _DBTransaction.Dispose()
            End If
            _DBConnector.CloseDBConnection()
            _isTransaction = False

        End Sub

        Private Function getDBCommandTrans(ByVal commandText As String, Optional ByVal isSP As Boolean = False) As IDbCommand
            Dim selCommand As New System.Data.SqlClient.SqlCommand

            Try
                _DBConnector.OpenDBConnection()
                selCommand.Connection = _DBConnector.DBConnection
                If isSP Then
                    selCommand.CommandType = CommandType.StoredProcedure
                Else
                    selCommand.CommandType = CommandType.Text
                End If
                selCommand.CommandText = commandText
                If _isTransaction Then
                    selCommand.Transaction = _DBTransaction
                End If

                If _TimeOut > 0 Then
                    selCommand.CommandTimeout = _TimeOut
                End If
                Return selCommand

            Catch ex As Exception
                RollbackTransaction()
                Throw ex

            End Try
        End Function

        Private Function getDBAdapter(ByVal DBCommand As IDbCommand) As IDbDataAdapter

            Try

                Return New System.Data.SqlClient.SqlDataAdapter(DBCommand)
            Catch ex As Exception
                RollbackTransaction()
                Throw ex

            End Try

        End Function

        Public Function ExecSQL(ByVal strSQL As String) As Boolean

            Dim selCommand As IDbCommand

            Try
                selCommand = getDBCommandTrans(strSQL)

                selCommand.ExecuteNonQuery()
                Return True
            Catch ex As Exception
                Return False

            End Try
        End Function

        Public Function SQLToDataset(ByVal tableName As String, ByVal strSQL As String) As DataSet

            Dim selCommand As IDbCommand
            Dim selAdapter As IDataAdapter
            Dim reDS As New DataSet


            Try
                Dim tables() As String
                tables = tableName.Split("|")
                selCommand = getDBCommandTrans(strSQL)

                selAdapter = getDBAdapter(selCommand)


                If selCommand Is Nothing Or selAdapter Is Nothing Then
                    Throw New Exception("err")
                End If

                selAdapter.Fill(reDS)
                If reDS.Tables.Count <> tables.Count Then
                    Throw New Exception("e")
                End If

                For i As Integer = 0 To tables.Count - 1
                    reDS.Tables(i).TableName = tables(i)
                Next

                Return reDS


            Catch ex As Exception
                Throw ex
            End Try

        End Function

    End Class

End Namespace

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值