2012-02-16 61 views
1

我一直無法找到如何在任何地方使用這個例子。我正在嘗試使用參數化查詢做一個簡單的SELECT語句。我想使用adArray數據類型。這裏是一個例子如何在VBScript中使用ADODB參數化查詢和adArray數據類型?

sql = "SELECT * FROM table WHERE id IN ?" 
set objCmd = Server.CreateObject("ADODB.Command") 
set objParam = objCmd.Createparameter("@id", 0x2000, 1, length, arrMyArray) 

objCmd.Parameters.Append objParam 

這會引發錯誤的類型錯誤。我很好奇,如果有人有這樣的工作或有任何例子。那簡直太好了。

感謝您的幫助!

+0

我遺漏了所有的連接和記錄集,並實際執行命令。 – robbie 2012-02-16 16:26:01

回答

1

我不知道哪個數據庫提供程序將支持陣列。

我更喜歡將數組作爲單個長字符串傳遞,然後使用名爲Split()的UDF。其結果是這樣的:

sql = "SELECT * FROM table WHERE id IN (Split(?))" 
set objCmd = Server.CreateObject("ADODB.Command") 
myBigString = ConvertArrayToCSV(arrMyArray) ' you have to write this, of course 
set objParam = objCmd.Createparameter("@id", 200, 1, length, myBigString) 

objCmd.Parameters.Append objParam 

Here's a discussion of the Split() concept.

編輯

我糾正上述(參數類型是200,而不是爲0x2000),而我現在也看到,ADO出現支持這種語法:

0x2000 OR 129 ' array of strings 
0x2000 OR 200 ' array of varchar 

但我沒有測試過這個。

+0

感謝您的快速響應。這可能是一個愚蠢的問題,但我應該如何告訴objParam它是一個字符串類型的數組。該文檔說明了這一點: '與另一種數據類型結合,以表明其他數據類型是一個數組' 我該怎麼做與0x2000 – robbie 2012-02-16 18:23:49

+1

我敢肯定,雖然它包含在文檔中,但它不支持由ADO添加併爲未來的兼容性添加。 – Lankymart 2016-02-17 10:22:55

+0

Lankymart對adArray類型未實現的更多信息:http://stackoverflow.com/a/35453499/1026 – Nickolay 2016-11-28 08:23:01