【问题标题】:Need Help to solve and understand this error: Exception Details: System.InvalidOperationException: 2需要帮助来解决和理解此错误:异常详细信息:System.InvalidOperationException:2
【发布时间】:2012-04-23 18:44:07
【问题描述】:

我收到了这个错误:

异常详细信息:System.InvalidOperationException:2:字符串截断:max=0,len=1,value='3'。

来自这组代码:

var reqcategory=Request["category"];
foreach (var cat in reqcategory)
{
    var sql5 = "SELECT Type.PreReq1, Type.PreReq2, 
                       (CASE WHEN (Type.PreReq1 IS NOT NULL)
                             AND (PermitApp1.RPClass IS NULL) 
                             AND (PermitApp1.RPCategory IS NULL) 
                        THEN 1 ELSE 0 END) AS missing1, 
                       (CASE WHEN (Type.PreReq2 IS NOT NULL) 
                             AND (PermitApp2.RPClass IS NULL)
                             AND (PermitApp2.RPCategory IS NULL) 
                        THEN 1 ELSE 0 END) AS missing2 
                FROM Type LEFT JOIN PermitApp AS PermitApp1 
                     ON (Type.PreReq1=PermitApp1.RPClass) 
                       OR (Type.PreReq1=PermitApp1.RPCategory) 
                           AND ( PermitApp1.CDSID = @0 ) 
                           AND (PermitApp1.MDecision='1') 
                          LEFT JOIN PermitApp AS PermitApp2 
                     ON (Type.PreReq2=PermitApp2.RPClass) 
                       OR (Type.PreReq2=PermitApp2.RPCategory) 
                           AND ( PermitApp2.CDSID = @1 ) 
                           AND (PermitApp2.MDecision='1') 
                WHERE Type.PType = @2";

    var result = db.QuerySingle(sql5, myCDSID, username, cat);
    var miss1 = result.missing1;
    var miss2 = result.missing2;

    if(miss1 == '1' || miss2 == '1'){
        ModelState.AddError("missing", 
                  "You have not met the Pre-Requisites for "+ cat +" yet.");
    } else if (miss1 == '0' && miss2 == '0'){
        Session["license"] = Request["licence"];
        Session["from"] = Request["from"];
        Session["to"] = Request["to"];
        Session["group"] = Request["group"];
        Session["class1"] = Request["class1"];
        Session["category1"] = Request["category1"];
        Session["class"] = Request["class"];
        Session["category"] = Request["category"];
        Response.Redirect("~/Questionnaire");
    }
}

突出显示的行是:

var result = db.QuerySingle(sql5, myCDSID, username, cat);

我不明白错误页面上提到的内容,也找不到与我的情况相同的人。谢谢

【问题讨论】:

  • 您是否首先在 Mgmt Studio 中测试了那个可怕的 SQL 语句?有用吗?
  • 其中一个参数 (myCDSID) 的值为 '3' 吗?
  • 是的,经过测试的 SQL 查询可以按我想要的方式完美运行,但不确定变量...wat 是参数吗?
  • Param[eter] 是@0、@1、@2 值
  • 哦不,没有一个参数有 3 它都是字符串

标签: c# database razor webmatrix


【解决方案1】:

好吧,我不能代表您的 SQL 查询,因为我认为我从未见过这样的查询,但根据我的经验,当进行查询并返回该错误时,只要它根本是一个有效的 sql 查询,这意味着必须“截断”一个字符串,因为数据库字段设置为存储的字符少于您尝试传递到该字段的字符。

也就是说,例如,一个字符串(例如 60 个字符长)被传递到设置为 nvarchar(50) 的字段中。尝试调整允许存储在字符串字段中的字节数。

不完全确定这是否是您的问题,因为我自己对很多事情还很陌生,但我只是认为这可能是一种可能性,因为我已经见过几次发生在我身上的事情之前。

希望我能帮上忙!

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 2015-09-16
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多