这个问题与, 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时没有其他任何问题。
答案 0 :(得分:0)
我可以告诉您使用ADODB
,但最简单的解决方案是使用System.Data中的.NET标准内容,例如SqlCommand。这在.NET 2.0,3.5,4.0中是一致的。 (并且ADODB 旧!)