在.NET程序集2中向ADODB命令添加参数时出错

时间:2014-01-05 08:59:24

标签: .net stored-procedures com .net-assembly adodb

这个问题与, Error when adding parameters to ADODB command in a .NET assembly

我遇到了这篇文章,并且能够从答案中解决我的问题。 但是,我的问题没什么不同。

cmd.CommandType = CommandTypeEnum.adCmdStoredProc;
cmd.CommandText = "GetUserPreferencesBasedOnScreen";
cmd.let_ActiveConnection(conn);
conn.CursorLocation = CursorLocationEnum.adUseClient;
object dummy = Type.Missing;
Parameters paramets = cmd.Parameters;
int paramCount = paramets.Count;
for (int iParams = paramCount - 1; iParams >= 0; iParams--)
{
    paramets.Delete(iParams);
}
Parameter pMtr = cmd.CreateParameter("Screen_Name", DataTypeEnum.adVarChar, ParameterDirectionEnum.adParamInput, 50);
paramets.Append(pMtr);

最后一行抛出以下错误

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.

当我使用.Net framework 3.5时,此代码没有给出错误。 现在,只要我将框架更改为4.0,我就开始收到此错误。

如果有其他选择可以使用2.8,请告诉我。否则我将不得不再次测试,以确保在采用2.7时没有其他任何问题。

1 个答案:

答案 0 :(得分:0)

我可以告诉您使用ADODB,但最简单的解决方案是使用System.Data中的.NET标准内容,例如SqlCommand。这在.NET 2.0,3.5,4.0中是一致的。 (并且ADODB !)