У меня есть сборка .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 был обработан
Сообщение = System.InvalidCastException:
Невозможно привести COM-объект типа
'System .__ ComObject' для типа класса
'ADODB.InternalParameter. Инстансы
типов, которые представляют компоненты COM
не может быть приведен к типам, которые не
представлять компоненты COM; Однако они
может быть приведен к интерфейсам до тех пор, пока
базовый компонент COM поддерживает
QueryInterface вызывает IID
интерфейс.
в строке:
.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