您的位置:首页 > 数据库 > Oracle

关于oracle.DataAccess.Client

2015-03-10 14:41 183 查看
Imports Oracle.DataAccess.Client
Imports System.Data.SqlClient

oracle.DataAccess.Client类下面方法:OracleConnection,OracleCommand,OracleTransaction,OracleDataAdapter

Public Class clsODP
Private _sConnectionString As String = String.Empty
Private _sMessage As String = String.Empty
Private _sSQL As String = String.Empty
Private _oOdpCn As OracleConnection = Nothing
Private _oOdpCmd As OracleCommand = Nothing
Private _oOdpTrn As OracleTransaction = Nothing
Private _oOdpAdpt As OracleDataAdapter = Nothing

#Region "Public Property"

Public Property ConnectionString() As String
Get
Return _sConnectionString
End Get
Set(ByVal Value As String)
_sConnectionString = Value
End Set
End Property

Public ReadOnly Property Message() As String
Get
Return _sMessage
End Get
End Property

Public ReadOnly Property SQL() As String
Get
Return _sSQL
End Get
End Property

Public Property Command() As OracleCommand
Get
Return _oOdpCmd
End Get
Set(ByVal value As OracleCommand)
_oOdpCmd = value
End Set
End Property

#End Region

Public Sub New()
End Sub
Public Sub New(ByVal psconnectionString As String)
_sConnectionString = psconnectionString
Open(psconnectionString)
End Sub

Public Function IsDisconnect(ByVal dbConnectionString As String) As Boolean
IsDisconnect = True
Try 'Reconnect Database When It's Disconnected
With _oOdpCmd
.ArrayBindCount = 0
.BindByName = True
.CommandType = CommandType.Text
.CommandText = "SELECT NULL FROM DUAL"
.ExecuteNonQuery()
End With
Catch ex As Exception
Open(dbConnectionString)
End Try
IsDisconnect = False
End Function
Public Function Open(Optional ByVal psConnectionString As String = "") As Boolean
Try
If _sConnectionString = "" And psConnectionString = "" Then
_sMessage = "Database connection string is empty!"
Open = False

Else
If psConnectionString <> "" Then _sConnectionString = psConnectionString

If _oOdpCn Is Nothing Then _oOdpCn = New OracleConnection
With _oOdpCn
If .State <> System.Data.ConnectionState.Closed Then .Close()
.ConnectionString = _sConnectionString
.Open()
End With
If _oOdpCmd Is Nothing Then _oOdpCmd = New OracleCommand
_oOdpCmd.Connection = _oOdpCn
_sMessage = ""
Return True
End If

Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function

Public Function Close() As Boolean
Try
If Not _oOdpTrn Is Nothing Then
_oOdpTrn.Rollback()
_oOdpTrn.Dispose()
_oOdpTrn = Nothing
End If
If Not _oOdpAdpt Is Nothing Then
_oOdpAdpt.Dispose()
_oOdpAdpt = Nothing
End If
If Not _oOdpCmd Is Nothing Then
_oOdpCmd.Dispose()
_oOdpCmd = Nothing
End If
If _oOdpCn.State <> ConnectionState.Closed Then
_oOdpCn.Close()
_oOdpCn.Dispose()
_oOdpCn = Nothing
End If
_sMessage = ""
Return True
Catch ex As Exception
_sMessage = ex.Message
Return False
End Try
End Function
Public Function BeginTrans() As Boolean
If _oOdpCn.State <> System.Data.ConnectionState.Open Then
BeginTrans = Open()
If Not BeginTrans Then Exit Function
End If

Try
_oOdpTrn = _oOdpCn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted)
Return True

Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function
Public Function CommitTrans() As Boolean
Try
_oOdpTrn.Commit()
_oOdpTrn.Dispose()
_oOdpTrn = Nothing
Return True

Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function
Public Function RollbackTrans() As Boolean
Try
_oOdpTrn.Rollback()
_oOdpTrn.Dispose()
_oOdpTrn = Nothing
Return True

Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function
Public Sub FillDataTable(ByRef dataTable As DataTable)
FillDataTable(_sSQL, dataTable)
End Sub
Public Function FillDataTable() As DataTable
Dim loDT As New DataTable
FillDataTable(_sSQL, loDT)
Return loDT
End Function
Public Function FillDataTable(ByVal tableName As String) As DataTable
Dim loDT As New DataTable(tableName)
FillDataTable(_sSQL, loDT)
Return loDT
End Function
Public Function FillAllData(ByVal tableName As String, ByVal poDataTable As DataTable, ByVal destinationTable As DataTable)
If _oOdpCn.State <> System.Data.ConnectionState.Open Then
FillAllData = Open()
If Not FillAllData Then Exit Function
End If
Try
Dim OracleCopy As OracleBulkCopy = New OracleBulkCopy(ConnectionString, SqlBulkCopyOptions.UseInternalTransaction)
OracleCopy.DestinationTableName = tableName
For i = 0 To poDataTable.Columns.Count - 1

OracleCopy.ColumnMappings.Add(poDataTable.Columns(i).ColumnName, destinationTable.Columns(i).ColumnName)

Next
OracleCopy.WriteToServer(poDataTable)
OracleCopy.Close()
Return True
Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function
Public Function FillDataTable(ByVal psSQL As String, ByRef poDataTable As DataTable) As Boolean
If _oOdpCn.State <> System.Data.ConnectionState.Open Then
FillDataTable = Open()
If Not FillDataTable Then Exit Function
End If

Try
With _oOdpCmd
.CommandType = System.Data.CommandType.Text
.CommandText = psSQL
_sSQL = psSQL
End With
_oOdpAdpt = New OracleDataAdapter(_oOdpCmd)
_oOdpAdpt.Fill(poDataTable)
_sMessage = ""
Return True

Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function

Public Function ExecuteScalar(ByVal psSQL As String, ByRef psScalar As String) As Boolean
If _oOdpCn.State <> System.Data.ConnectionState.Open Then
ExecuteScalar = Open()
If Not ExecuteScalar Then Exit Function
End If

Try
Dim objES As Object

With _oOdpCmd
.CommandType = System.Data.CommandType.Text
.CommandText = psSQL
_sSQL = psSQL
objES = .ExecuteScalar
If objES Is DBNull.Value Or objES Is Nothing Then
psScalar = ""
Else
psScalar = objES.ToString
End If

End With

_sMessage = ""
Return True

Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function
Public Function ExecuteNonQuery(ByVal psSQL As String, Optional ByRef piAffected As Integer = 0) As Boolean
If _oOdpCn.State <> System.Data.ConnectionState.Open Then
ExecuteNonQuery = Open()
If Not ExecuteNonQuery Then Exit Function
End If

Try
With _oOdpCmd
.CommandType = System.Data.CommandType.Text
.CommandText = psSQL
_sSQL = psSQL
piAffected = .ExecuteNonQuery
End With

_sMessage = ""
Return True

Catch ex As Exception
_sMessage = ex.Message
Return False

End Try
End Function

Public Function ExecuteInTransaction(ByVal paSQL As String()) As Boolean
Dim _oCmd As OracleCommand = Nothing
Dim _oTrn As OracleTransaction = Nothing
Dim sql As String = ""
Try
Open()
_oCmd = New OracleCommand
_oCmd.Connection = _oOdpCn
_oTrn = _oCmd.Connection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted)
If IsNothing(paSQL) Then
Return True
End If
If paSQL.Length = 0 Then
Return True
End If
For Each sql In paSQL
With _oCmd
.CommandText = sql
.ExecuteNonQuery()
End With
Next
_oTrn.Commit()
Return True
Catch ex As Exception
_oTrn.Rollback()
_sMessage = ex.Message & " [SQL]:" & sql
Return False
Finally
If Not IsNothing(_oCmd) Then _oCmd.Dispose()
If _oOdpCn.State = ConnectionState.Open Then
_oOdpCn.Close()
End If
End Try
End Function

Public Shared Function NVL(ByVal objectToCheck As Object, ByVal objectWhenNull As Object) As Object
If IsDBNull(objectToCheck) Or IsNothing(objectToCheck) Then
Return objectWhenNull
Else
Return objectToCheck
End If
End Function
End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐