command.Parameters.GetValue <long>上的无效强制转换异常

时间:2016-03-01 07:31:57

标签: c# ado.net

我有一些ADO.Net代码,如下所示,它在DB中成功执行SP,而在tenantId抛出异常,请指导我。

char*first(int i)
{
    int j,k=0,x;
    char temp[500], *str;
    for(j=0;grammar[i][j]!=NULL;j++)
    {
        if(islower(grammar[i][j][0]) || grammar[i][j][0]=='#' || grammar[i][j][0]==' ')
        {
           temp[k]=grammar[i][j][0];
           temp[k+1]='\0';
        }
        else
        {
            if(grammar[i][j][0]==terminals[i])
            {
                temp[k]=' ';
                temp[k+1]='\0';
            }
            else
            {
                x=hashValue(grammar[i][j][0]);
                str=first(x);
                strncat(temp,str,strlen(str));
            }
        }
        k++;
    }
    return temp;
}

command.Parameters.Input.BigInt(ParameterConstants.TenantId) .BigInt(ParameterConstants.PartyId, tenant.PartyId) .Varchar(ParameterConstants.TenantCode, tenant.TenantCode) .BigInt(ParameterConstants.PharmaId, tenant.PharmaId) .BigInt(ParameterConstants.UserId, userProfileId); command.ExecuteNonQuery(); var tenantId = command.Parameters.GetValue<long>(ParameterConstants.TenantId); 它会抛出强制转换异常var tenantId ... 确切异常System.InvalidCastExceptio

Specified cast is not valid.

2 个答案:

答案 0 :(得分:1)

您的GetValue<long>方法可能无法处理NULL值。那个GetValue<>可能是你或别人写的自定义方法(不是微软),所以我不知道如何修复它。你可以尝试:

var tenantId = command.Parameters.GetValue<long?>(ParameterConstants.TenantId);

答案 1 :(得分:0)

我的猜测是TenantId的数据库类型和类类型不兼容。例如,string vs int vs long。