従来の ASP ページで使用されている .NET アセンブリがあります。ADODB レコードセットを返すメソッドを作成しました。私の ADODB コマンド オブジェクトでは、adCmdStoredProc CommandType プロパティに次の形式を使用してパラメーターを指定しています...
With ADODBCmd
.ActiveConnection = ADODBConn
.Prepared = True
.CommandType = CommandTypeEnum.adCmdStoredProc
.NamedParameters = True
.CommandText = Sql_GetMyBook
.Parameters.Append(.CreateParameter("@book", DataTypeEnum.adChar, ParameterDirectionEnum.adParamInput, 50, MyBook))
End With
キャストエラーが発生します...
System.Exception は処理
されませんでした Message=System.InvalidCastException: タイプ 'System.__ComObject' の COM オブジェクトをクラス タイプ 'ADODB.InternalParameter' にキャストできません。COM コンポーネントを表す型のインスタンスは、COM コンポーネントを表さない型にキャストできません。ただし、基になる COM コンポーネントがインターフェイスの IID に対する QueryInterface 呼び出しをサポートしている限り、インターフェイスにキャストできます。
行で:
.Parameters.Append(.CreateParameter("@book", DataTypeEnum.adChar, ParameterDirectionEnum.adParamInput, 50, MyBook))
何か案は?
ストアド プロシージャ:
ALTER PROCEDURE [dbo].[GetMybook]
-- Add the parameters for the stored procedure here
@book char(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT BookTitle, Author, PulishedDate
FROM Library
WHERE BookTitle=@book