我有一个由经典 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 was unhandled
Message=System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to class type 'ADODB.InternalParameter'. Instances of types that represent COM components cannot be cast to types that do not represent COM components; however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface.
行:
.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
最佳答案
Microsoft ActiveX 数据对象库中“.CreateParameter”方法的返回值之间存在差异(有意或无意)
2.7 - 返回“ADODB.InternalParameter”(这是 ADODB.Command 对象所期望的)
2.8 - 返回“System.__ComObject”(ADODB.Command 无法处理或不知道如何处理)
出于我的目的,我必须将引用从 2.8 更改为 2.7 库,以便将创建的参数附加到命令对象。
感谢 Chris Behrens 帮助我缩小了解决方案的搜索范围。
关于.net - 向 .NET 程序集中的 ADODB 命令添加参数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818552/