Vb对OO4O的封装

Vb访问Oracle 的数据库,Oracle 本身提供了一组对象Oracle Objects for OLE
这里简称 OO4O ,为了方便,我将他们重新封装成COo4o,全部源代码如下,希望大家调试纠错,注释我就免了,也想看看可读性怎么样 tongue_smile.gif大家可以随便使用,但是有改进的地方不要忘记通知我,谢谢
参照:http://cs.cegep-heritage.qc.ca/oracledocs/win.901/a90173/o4o00000.htm

COo4o.JPG

None.gif None.gif
None.gif
Public  Enum OraParamType
None.gif  ORAPARM_INPUT 
=   1
None.gif  ORAPARM_OUTPUT 
=   2
None.gif  ORAPARM_BOTH 
=   3
None.gif
End  Enum
None.gif
None.gif
Public  Enum OraServerType
None.gif  ORATYPE_VARCHAR2 
=   1
None.gif  ORATYPE_NUMBER 
=   2
None.gif  ORATYPE_VARCHAR 
=   9
None.gif  ORATYPE_DATE 
=   12
None.gif  ORATYPE_CHAR 
=   96
None.gif  ORATYPE_OBJECT 
=   108
None.gif  ORATYPE_BLOB 
=   113
None.gif  ORATYPE_VARRAY 
=   247
None.gif
End  Enum
None.gif
None.gif
Private  m_objOraDatabase  As   Object
None.gif
Private  m_objOraSession  As   Object
None.gif
Private  m_blnShowMsg  As   Boolean
None.gif
Private  m_lngDbErrId  As   Long
None.gif
Private  m_strDbErrMsg  As   String
None.gif
Private  m_arrParams()  As   String
None.gif
Private  m_intParams  As   Integer
None.gif
None.gif
Const  clngNormal   As   Long   =   1
None.gif
Const  clngError  As   Long   =   0
None.gif
Const  clngErrTransBegin  As   Long   =   - 1
None.gif
Const  clngErrTrans  As   Long   =   - 2
None.gif
Const  clngErrTransRollBack  As   Long   =   - 3
None.gif
Const  clngErrNullSession  As   Long   =   - 100
None.gif
Const  ErrNullDB  =   - 200
None.gif
None.gif
Public   Property   Get  Database()  As  Variant
None.gif  
Set  Database  =  m_objOraDatabase
None.gif
End Property
None.gif
None.gif
Public   Property   Get  Session()  As  Variant
None.gif  
Set  Session  =  m_objOraSession
None.gif
End Property
None.gif
None.gif
Public  Static  Property   Get  DbErrId()  As   Long
None.gif  DbErrId 
=  m_lngDbErrId
None.gif
End Property
None.gif
None.gif
Public  Static  Property   Get  DbErrMsg()  As   String
None.gif  DbErrMsg 
=  m_strDbErrMsg
None.gif
End Property
None.gif
None.gif
Public  Static  Property   Get  NullSession()  As   Long
None.gif  NullSession 
=  clngErrNullSession
None.gif
End Property
None.gif
None.gif
Public  Static  Property   Get  NullDatabase()  As   Long
None.gif  NullDatabase 
=  ErrNullDB
None.gif
End Property
None.gif
None.gif
Public  Static  Property   Get  RetNormal()  As   Long
None.gif  RetNormal 
=  clngNormal
None.gif
End Property

None.gif
Public  Static  Property   Get  RetError()  As   Long
None.gif  RetError 
=  clngError
None.gif
End Property

None.gif
Public  Static  Property   Get  RetErrTransBegin()  As   Long
None.gif  RetErrTransBegin 
=  clngErrTransBegin
None.gif
End Property

None.gif
Public  Static  Property   Get  RetErrTransRollBack()  As   Long
None.gif  RetErrTransRollBack 
=  clngErrTransRollBack
None.gif
End Property

None.gif
Public  Static  Property   Get  RetErrTrans()  As   Long
None.gif  RetErrTrans 
=  clngErrTrans
None.gif
End Property
None.gif
None.gif
Private   Sub  Class_Initialize()
None.gif  m_intParams 
=   0
None.gif  
ReDim  m_arrParams( 0 )
None.gif  
None.gif  m_blnShowMsg 
=   True
None.gif
End Sub
None.gif
None.gif
Private   Sub  Class_Terminate()
None.gif  
Call  CloseDB
None.gif
End Sub
None.gif
None.gif
Public   Function  ConnectDatabase(ByVal pvstrUser  As   String , ByVal pvstrPass  As   String , ByVal pvstrDB  As   String As   Boolean
None.gif  
On   Error   GoTo  SkipErrCase
None.gif
None.gif  
Set  m_objOraSession  =   CreateObject ( " OracleInProcServer.XOraSession " )
None.gif  
Set  m_objOraDatabase  =  m_objOraSession.DbOpenDatabase(pvstrDB,  pvstrUser  &   " / "   &  pvstrPass,  0 & )
None.gif  m_lngDbErrId 
=  clngNormal
None.gif  
Exit   Function
None.gifSkipErrCase:
None.gif  
Dim  lngRet  As   Long
None.gif  lngRet 
=  doDbError
None.gif  
None.gif  
If  Err  <>   0   Then   ' Err.Description
None.gif
    ConnectDatabase  =   False
None.gif    
Call  CloseDB
None.gif  
Else
None.gif    ConnectDatabase 
=   True
None.gif  
End   If
None.gif
End Function
None.gif
None.gif
Public   Function  BeginTrans()  As   Long
None.gif  
On   Error   GoTo  SkipErrCase
None.gif  m_objOraSession.BeginTrans
None.gif  m_lngDbErrId 
=  clngNormal
None.gif  BeginTrans 
=  clngNormal
None.gif  
Exit   Function
None.gifSkipErrCase:
None.gif  
' BeginTrans = doDbError
None.gif
  m_lngDbErrId  =  clngErrTransBegin
None.gif  BeginTrans 
=  clngErrTransBegin
None.gif
End Function
None.gif
None.gif
Public   Function  RollBack()  As   Long
None.gif  
On   Error   GoTo  SkipErrCase
None.gif  m_objOraSession.RollBack
None.gif  m_lngDbErrId 
=  clngNormal
None.gif  RollBack 
=  clngNormal
None.gif  
Exit   Function
None.gifSkipErrCase:
None.gif  
' RollBack = doDbError
None.gif
  m_lngDbErrId  =  clngErrTransRollBack
None.gif  RollBack 
=  clngErrTransRollBack
None.gif
End Function
None.gif
None.gif
Public   Function  CommitTrans()  As   Long
None.gif  
On   Error   GoTo  SkipErrCase
None.gif  m_objOraSession.CommitTrans
None.gif  m_lngDbErrId 
=  clngNormal
None.gif  CommitTrans 
=  clngNormal
None.gif  
Exit   Function
None.gifSkipErrCase:
None.gif  
' CommitTrans = doDbError
None.gif
  m_lngDbErrId  =  clngErrTrans
None.gif  CommitTrans 
=  clngErrTrans
None.gif
End Function
None.gif
None.gif
Public   Function   Execute (ByVal strSQL  As   String As   Long
None.gif  
On   Error   GoTo  SkipErrCase
None.gif
None.gif  
Execute   =  m_objOraDatabase.ExecuteSQL(strSQL)
None.gif  m_lngDbErrId 
=  clngNormal
None.gif  
Execute   =  clngNormal
None.gif  
Exit   Function
None.gifSkipErrCase:
None.gif  
Execute   =  doDbError
None.gif
End Function
None.gif
None.gif
Public   Function  OpenRecordset(ByVal strSQL  As   String ,  Optional ByVal varOption  As  OraDynType  =   CLng ( 0 ))  As   Object
None.gif  
None.gif  
On   Error   GoTo  SkipErrCase
None.gif
None.gif  
Set  OpenRecordset  =  m_objOraDatabase.DbCreateDynaset(strSQL, varOption)
None.gif  m_lngDbErrId 
=  clngNormal
None.gif  
Exit   Function
None.gifSkipErrCase:
None.gif  
Call  doDbError
None.gif  
Set  OpenRecordset  =   Nothing
None.gif
End Function
None.gif
None.gif
Public   Sub  CloseDB()
None.gif  
If   Not  m_objOraDatabase  Is   Nothing   Then
None.gif    m_objOraDatabase.Close
None.gif    
Set  m_objOraDatabase  =   Nothing
None.gif  
End   If
None.gif  
None.gif  
If   Not  m_objOraSession  Is   Nothing   Then
None.gif    
Set  m_objOraSession  =   Nothing
None.gif  
End   If
None.gif
End Sub
None.gif
None.gif
Public   Function  ParamsRemove(ByVal Name  As   String As   Boolean
None.gif  
Dim  blnRet  As   Boolean
None.gif  blnRet 
=  removeParamsArray(Name)
None.gif  
If  blnRet  =   True   Then
None.gif    
Call  m_objOraDatabase.Parameters.Remove(Name)
None.gif  
End   If
None.gif  ParamsRemove 
=  blnRet
None.gif
End Function
None.gif
None.gif
Public   Function  ParamsAdd(ByVal Name  As   String , ByVal Value  As  Variant, ByVal ServerType  As  OraServerType, ByVal Derection  As  OraParamType)  As   Boolean
None.gif  
Dim  blnRet  As   Boolean
None.gif  blnRet 
=  addParamsArray(Name)
None.gif  
If  blnRet  =   True   Then
None.gif    
Call  m_objOraDatabase.Parameters.Add(Name, Value, ServerType, Derection)
None.gif  
End   If
None.gif  ParamsAdd 
=  blnRet
None.gif
End Function
None.gif
None.gif
Public   Function  ParamsGetValue(ByVal Name  As   String As  Variant
None.gif  
On   Error   GoTo  SkipErrPos
None.gif  ParamsGetValue 
=  m_objOraDatabase.Parameters(Name).Value
None.gif  
Exit   Function
None.gifSkipErrPos:
None.gif  ParamsGetValue 
=   " "
None.gif
End Function
None.gif
None.gif
Public   Sub  ParamsSetServerType(ByVal Name  As   String , ByVal ServerType  As  OraServerType)
None.gif  
On   Error   GoTo  SkipErrPos
None.gif  m_objOraDatabase.Parameters(Name).ServerType 
=  ServerType
None.gifSkipErrPos:
None.gif  
Exit   Sub
None.gif
End Sub
None.gif
None.gif
Private   Function  doDbError()  As   Long
None.gif  
' Screen.ActiveForm.Name
None.gif
   If   Not  m_objOraDatabase  Is   Nothing   Then
None.gif    m_lngDbErrId 
=  m_objOraDatabase.LastServerErr
None.gif    m_strDbErrMsg 
=  m_objOraDatabase.LastServerErrText
None.gif    doDbError 
=  m_lngDbErrId
None.gif  
ElseIf   Not  m_objOraSession  Is   Nothing   Then
None.gif    m_lngDbErrId 
=  m_objOraSession.LastServerErr
None.gif    m_strDbErrMsg 
=  m_objOraSession.LastServerErrText
None.gif    doDbError 
=  m_lngDbErrId
None.gif  
Else
None.gif    m_lngDbErrId 
=  clngError
None.gif    doDbError 
=  clngErrNullSession
None.gif  
End   If
None.gif
End Function
None.gif
None.gif
Public   Function  ParamsGetNum()  As   Integer
None.gif  ParamsGetNum 
=  m_intParams
None.gif
End Function
None.gif
None.gif
Public   Function  ParamsGetNameAt(ByVal pvintIndex  As   Integer As   String
None.gif  
If  pvintIndex  >  m_intParams  Then
None.gif    ParamsGetNameAt 
=   " "
None.gif
     Exit   Function
None.gif  
End   If
None.gif  ParamsGetNameAt 
=  m_arrParams(pvintIndex)
None.gif
End Function
None.gif
None.gif
Private   Function  addParamsArray(ByVal pvstrParamName  As   String As   Boolean
None.gif  
Dim  intNo  As   Integer
None.gif  
Dim  arrTem()  As   String
None.gif  
Dim  blgNew  As   Boolean
None.gif  blgNew 
=   True
None.gif  
ReDim  arrTem(m_intParams)
None.gif  
For  intNo  =   1   To  m_intParams
None.gif    arrTem(intNo) 
=  m_arrParams(intNo)
None.gif    
If  blgNew  =   True   And  m_arrParams(intNo)  =  pvstrParamName  Then
None.gif      blgNew 
=   False
None.gif    
End   If
None.gif  
Next  intNo
None.gif  
None.gif  
If  blgNew  =   True   Then
None.gif    m_intParams 
=  m_intParams  +   1
None.gif    
ReDim  m_arrParams(m_intParams)
None.gif    
For  intNo  =   1   To  m_intParams  -   1
None.gif      m_arrParams(intNo) 
=  arrTem(intNo)
None.gif    
Next  intNo
None.gif    m_arrParams(m_intParams) 
=  pvstrParamName
None.gif  
End   If
None.gif  
ReDim  arrTem( 0 )
None.gif  addParamsArray 
=  blgNew
None.gif
End Function
None.gif
None.gif
Private   Function  removeParamsArray(ByVal pvstrParamName  As   String As   Boolean
None.gif  
Dim  intNo  As   Integer
None.gif  
Dim  arrTem()  As   String
None.gif  
Dim  blnRet  As   Boolean
None.gif  blnRet 
=   False
None.gif  
For  intNo  =   1   To  m_intParams
None.gif    
If  m_arrParams(intNo)  =  pvstrParamName  Then
None.gif      blnRet 
=   True
None.gif      
Exit   For
None.gif    
End   If
None.gif  
Next  intNo
None.gif  
None.gif  
If  blnRet  =   True   Then
None.gif    
ReDim  arrTem(m_intParams  -   1 )
None.gif    
Dim  intJ  As   Integer
None.gif    intJ 
=   1
None.gif    
For  intNo  =   1   To  m_intParams
None.gif      
If  m_arrParams(intNo)  <>  pvstrParamName  Then
None.gif        arrTem(intJ) 
=  m_arrParams(intNo)
None.gif        intJ 
=  intJ  +   1
None.gif      
End   If
None.gif    
Next  intNo
None.gif  
None.gif    m_intParams 
=  m_intParams  -   1
None.gif    
ReDim  m_arrParams(m_intParams)
None.gif    
For  intNo  =   1   To  m_intParams
None.gif      m_arrParams(intNo) 
=  arrTem(intNo)
None.gif    
Next  intNo
None.gif    
ReDim  arrTem( 0 )
None.gif    blnRet 
=   True
None.gif  
End   If
None.gif  
None.gif  removeParamsArray 
=   True
None.gif
End Function
None.gif
None.gif
Public   Sub  ParamsRemoveAll()
None.gif  
On   Error   GoTo  SkipEnd
None.gif  
Dim  intNo  As   Integer
None.gif  
If  m_objOraDatabase  Is   Nothing   Then
None.gif    
GoTo  SkipEnd
None.gif  
End   If
None.gif  
For  intNo  =   1   To  m_intParams
None.gif    
Call  m_objOraDatabase.Parameters.Remove(m_arrParams(intNo))
None.gif  
Next  intNo
None.gifSkipEnd:
None.gif  
ReDim  m_arrParams( 0 )
None.gif  m_intParams 
=   0
None.gif
End Sub

转载于:https://www.cnblogs.com/LiuShui/archive/2004/08/07/30964.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值