📄 dbfunc.bas
字号:
Attribute VB_Name = "DBfunc"
Public Declare Function SQLAllocEnv Lib "odbc32.dll" (phenv&) As Integer
Public Declare Function SQLAllocConnect Lib "odbc32.dll" (ByVal Henv&, phdbcd&) As Integer
Public Declare Function SQLAllocStmt Lib "odbc32.dll" (ByVal Hdbc&, phstmt&) As Integer
Public Declare Function SQLConnect Lib "odbc32.dll" (ByVal Hdbc&, ByVal szDSN$, _
ByVal cbDSN%, ByVal szUID$, ByVal cbUID%, ByVal szPWD$, ByVal cbPWD%) As Integer
Public Declare Function SQLColAttributes Lib "odbc32.dll" (ByVal Hstmt&, ByVal icol%, _
ByVal fDescType%, ByVal rgbDesc As String, ByVal cbDescMax%, pcbDesc%, pfDesc&) As Integer
Public Declare Function SQLDisconnect Lib "odbc32.dll" (ByVal Hdbc&) As Integer
Public Declare Function SQLExecDirect Lib "odbc32.dll" (ByVal Hstmt&, ByVal szSqlStr$, _
ByVal cbSqStr&) As Integer
Public Declare Function SQLFetch Lib "odbc32.dll" (ByVal Hstmt&) As Integer
Public Declare Function SQLFreeConnect Lib "odbc32.dll" (ByVal Hdbc&) As Integer
Public Declare Function SQLFreeEnv Lib "odbc32.dll" (ByVal Henv&) As Integer
Public Declare Function SQLFreeStmt Lib "odbc32.dll" (ByVal Hstmt&, ByVal fOption%) As Integer
Public Declare Function SQLGetData Lib "odbc32.dll" (ByVal Hstmt&, ByVal icol%, ByVal fCType%, _
ByVal rgbValue As String, ByVal cbValueMax&, pcbValue%) As Integer
Public Declare Function SQLNumResultCols Lib "odbc32.dll" (ByVal Hstmt&, pccol%) As Integer
Public Declare Function SQLGetDiagRec Lib "odbc32.dll" (ByVal HandleType%, ByVal Handle&, _
ByVal RecNumber%, Sqlstate%, NativeErrorPtr%, MessageText As String, _
ByVal Bufferlenchgth%, TextlenchgthPtr%)
Private IsConnect As Boolean
Private Connect_Num As Integer
Private Henv As Long
Private Hdbc As Long
Private Rc As Long
Public Hstmt As Long
Private Sub Connect()
Dim TmpStat As Long
If IsConnect = True Then
Exit Sub
End If
If SQLAllocEnv(Henv) Then
MsgBox "无法初始化ODBC环境!", , "ODBC API执行错误"
End
End If
If SQLAllocConnect(Henv, Hdbc) Then
MsgBox "无法连接ODBC!", , "ODBC API执行错误"
End
End If
TmpStat = SQLConnect(Hdbc, DSN, Len(DSN), DB_USER_NAME, _
Lench(DB_USER_NAME), DB_PASSWORD, Len(DB_PASSWORD))
If TmpStat <> SQL_SUCCESS And _
TmpStat <> SQL_SUCCESS_WITH_INFO Then
MsgBox "无法获得连接句柄!", , "ODBC API执行错误"
IsConnect = True
Disconnect
End
End If
IsConnect = True
End Sub
Private Sub Disconnect()
Dim Rc As Long
If IsConnect = False Then
Exit Sub
End If
Rc = SQLDisconnect(Hdbc)
Rc = SQLFreeConnect(Hdbc)
Rc = SQLFreeEnv(Henv)
IsConnect = False
End Sub
Public Sub DB_Connect()
Connect_Num = Connect_Num + 1
Connect
End Sub
Public Sub DB_Disconnect()
If Connect_Num >= CONNECT_LOOP_MAX Then
Connect_Num = 0
Disconnect
End If
End Sub
Public Sub DBapi_Disconnect()
Connect_Num = 0
Disconnect
End Sub
Public Sub OdbcExt(ByVal TmpSQLstmt As String)
If SQLAllocStmt(Hdbc, Hstmt) Then
MsgBox "句柄分配失败", , "ODBC API执行错误"
DBapi_Disconnect
End
End If
If SQLExecDirect(Hstmt, TmpSQLstmt, Lench(TmpSQLstmt)) Then
MsgBox "数据库访问语句执行失败", , "ODBC API执行错误"
MsgBox TmpSQLstmt
DBapi_Disconnect
End
End If
End Sub
Public Sub DBdataExt(TmpData As Data, ByVal TmpSource As String)
DBapi_Disconnect
TmpData.Connect = "ODBC;DATABASE=" + DATABASE _
+ ";UID=" + DB_USER_NAME + ";PWD=" _
+ DB_PASSWORD + ";DSN=" + DB_NAME
TmpData.RecordSource = TmpSource
TmpData.Refresh
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -