我有一个.NET程序集,被经典ASP页面使用。我创建了一个返回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
.Parameters.Append(.CreateParameter("@book", DataTypeEnum.adChar, ParameterDirectionEnum.adParamInput, 50, CStr(MyBook)))
- Chris B. Behrens