我有以下JScript代碼:ADODB命令未能與參數化的SQL查詢執行
var conn = new ActiveXObject ("ADODB.Connection");
conn.Open("Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=blah_blah_blah;User=foo;Password=bar;");
var cmd = new ActiveXObject("ADODB.Command");
cmd.ActiveConnection = conn;
var strSQL = "SELECT id FROM tbl_info WHERE title LIKE :search ORDER BY id";
var search = "test";
try{
cmd.CommandText = strSQL;
var param = cmd.CreateParameter(':search', 200, 1, 100, search);
cmd.Parameters.Append(param);
var rs = cmd.Execute();
}
catch (ex) {
Application.Alert("Error retrieving id information from database.");
}
我已經驗證(通過打印它們)連接對象被設置爲命令的ActiveConnection,參數對象有正確的值和Command對象具有正確的SQL查詢作爲其CommandText。我還在try塊的每一行後面插入了一條alert語句,以查看錯誤發生的位置 - 在cmd.Parameters.Append後很好,但運行Execute語句時拋出異常。
我已經試過顯示實際例外,但它只是一個普通的「對象錯誤」的消息。
查詢執行罰款,並返回正確的結果集時,我只是執行SQL查詢(不帶參數),直接通過Connection對象,但似乎當我使用參數化查詢與Command對象失敗。
至於我可以看到所有的設置和命令和連接對象的屬性是正確的,但不管是什麼原因它拋出一個異常。
任何幫助,這將不勝感激。
這工作很好,謝謝。 不過,現在我有一個問題我也有使用多個參數等的查詢,但它們都使用_same_參數。所以我有一個參數(稱爲:搜索示例),它在同一個查詢中被多次引用。正如你所說的,因爲沒有足夠的綁定參數,所以它們按照它們追加到參數的順序被綁定,因爲查詢失敗。查詢是動態生成的,因此不可能確切知道需要多少個參數。有沒有辦法解決? – AdamLazaruso
@AdamLazaruso,不是我所知道的。在之前類似的情況下,我在創建查詢時創建並附加了參數。 –
這對我的代碼來說可能會很棘手,但如果沒有其他方法,我相信我可以使它工作。謝謝! – AdamLazaruso