次の JScript コードがあります。
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.");
}
Connection オブジェクトが Command の ActiveConnection に設定されていること、パラメーター オブジェクトが正しい値を持っていること、および Command オブジェクトが CommandText として正しい SQL クエリを持っていることを (それらを印刷して) 確認しました。また、try ブロックの各行の後にアラート ステートメントを挿入して、エラーが発生した場所を確認しました。cmd.Parameters.Append の後では問題ありませんが、Execute ステートメントを実行すると例外がスローされます。
実際の例外を表示しようとしましたが、これは単なる一般的な「オブジェクト エラー」メッセージです。
クエリは正常に実行され、Connection オブジェクトを介して直接 SQL クエリを (パラメータなしで) 実行すると正しい結果セットが返されますが、Command オブジェクトでパラメータ化されたクエリを使用すると失敗するようです。
Command オブジェクトと Connection オブジェクトのすべての設定とプロパティは正しいのですが、なんらかの理由で例外がスローされています。
これについての助けは大歓迎です。