0

従来の 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 行目

4

1 に答える 1