0
我已經使用Excel 2007中的ADO 2.7設置了參數化查詢。數據庫連接通過ODBC進行,並且每次嘗試在Excel中執行查詢結果都會崩潰......並且當我說'崩潰',我的意思是它必須關閉並重新啓動!在ADO中對Oracle的參數化查詢崩潰Excel
起初我以爲這是我的查詢太長(涉及多個參數)的問題;但我嘗試了一個非常基本的單參數查詢,並且遇到了同樣的問題......這是使用位置/未命名的參數,所以也許就是這個問題。但我不確定是否可以使用具有Oracle查詢的命名參數,除非我將其包含在架構中的存儲函數中。
我的代碼,它的價值:
打開數據庫(DBConnection
是一個自定義類型與DSN
,Username
,xPassword
和Key
成員,密碼存儲在與基本的加密存儲;還有一種是相應dbClose
功能,這是我在這裏省略。)
Private Function dbOpen(ByRef db As ADODB.Connection, Creds As DBConnection) As Boolean
On Error Resume Next
Set db = New ADODB.Connection
db.Open Creds.DSN, Creds.Username, XorC(Creds.xPassword, Creds.Key)
If db.State <> adStateOpen Then dbOpen = False Else dbOpen = True
End Function
獲取數據(簡體,一個比肩ameter,例如緣故)
Public Function GetData(ODBC As DBConnection, myParam As String) As ADODB.Recordset
Dim myDB As ADODB.Connection
Dim myQuery As ADODB.Command
Dim Parameter As ADODB.Parameter
Set myDB = New ADODB.Connection
If dbOpen(myDB, ODBC) Then
Set myQuery = New ADODB.Command
myQuery.ActiveConnection = myDB
myQuery.CommandText = "select * from sometable where id = ?"
Set Parameter = myQuery.CreateParameter(, adVarChar, adParamInput, 5, myParam)
Set GetData = myQuery.Execute
dbClose myDB
Else
MsgBox "Cannot connect to the database.", vbExclamation
Set GetData = Nothing
End If
End Function
測試例程會崩潰Excel中
Public Sub Test()
Dim Connection As DBConnection
Dim myData As ADODB.Recordset
With Connection
.DSN = "myDSN"
.Username = "dbUser"
.Key = Now
.xPassword = XorC("p4s5w0rd", .Key)
End With
Set myData = GetData(Connection, "AB123") ' Crashes here
dbClose myData
End Sub
您不會將您創建的參數添加到Command對象:「myQuery.Parameters.Append參數」只是創建它不會添加它... –
Ooohh:P哎呀!...謝謝:) – Xophmeister
添加我的評論作爲答案。 –