従来の ASP アプリケーションを更新しようとしていますが、更新の一環として、文字列連結を使用して動的 SQL をパラメーター化されたクエリに置き換えようとしました。
問題は、パラメーターが 210 文字を超える値を受け入れないことです。
次のエラーが表示されます...
ADODB.パラメータ エラー '800a0d5d'
アプリケーションは、現在の操作に対して間違った型の値を使用しています。
/admin/Save_product_subcategories.asp、30 行目
私の最初の試みはこのように見えます...
SQLString = "UPDATE Product_SubCategories
SET SubCategory=?, Description=?
WHERE SubCategoryID=?"
Set courseCommand = Server.CreateObject("ADODB.Command")
courseCommand.ActiveConnection = objConn
courseCommand.CommandText = SQLString
courseCommand.Parameters(0).value = cleanCategory
courseCommand.Parameters(1).Value = cleanDescription
courseCommand.Parameters(2).value = cleanSubCategoryId
パラメータタイプを手動で設定し、パラメータのサイズを大きくしようとしました...
courseCommand.Parameters(1).Type = 203
courseCommand.Parameters(1).Size = 300
courseCommand.Parameters(1).Type = adLongVarWChar
command.CreateParameter メソッドを使用してパラメーターを作成しようとしましたが、同じエラーが発生します。
param = courseCommand.CreateParameter(,,,,cleanDescription)
'or
param = courseCommand.CreateParameter(,adLongVarWChar,,,cleanDescription)
'or
param = courseCommand.CreateParameter(,adLongVarWChar,,300,cleanDescription)
courseCommand.Parameters(1) = param
私の唯一の選択肢は動的SQLに戻ることだと思い始めています。
編集:
配列インデックスを使用してコレクションにパラメーターを追加する代わりに、パラメーターを追加しようとしましたが、その後はどのパラメーターも機能しませんでした。
プロバイダー エラー '80020005'
型の不一致。
/admin/Save_product_subcategories.asp、31 行目