好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

c# – 输入字符串格式错误#2

我有以下要求:

string sqlStr = @"Select a.Text, a.TrackKey, a.NoteType, a.TranKey, a.TranType, 
    Case a.TranType when '1110' then 'https://www.cps/SAM/SO/RMA/RMAView.asp?key=' 
     when '502' then 'https://www.cps/SAM/AR/InvInqDetail.asp?Key=' 
     when '511' then 'https://www.cps/SAM/AR/InvInqDetail.asp?Key=' 
     when '801' then 'https://www.cps/SAM/AR/OrdInqDetail.asp?Key='
     when '1101' then 'https://www.cps/SAM/AP/POInqDetail.asp?key=' 
     when '1111' then 'https://www.cps/SAM/PO/TruckDetail.asp?truckkey=' 
     when '835' then 'https://www.cpsm/SAM/SO/RMA/RMAView.asp?key='  End HREF, 
    Case when a.TranType = '1110' then 'M'
     when a.TranType = '502' then 'W'
     when a.TranType = '511' then 'W' 
     when a.TranType = '1101' then 'B'
     when a.TranType = '1111' then 'B'
     when a.TranType = '835' then '('  
     when (a.TranType = '801' and a.NoteType = '9') then '{'
     when (a.TranType = '801' and a.NoteType = '8') then '(' End dataicon      
    From tamTrackrEngine a 
    Where a.CreateDate > DATEADD(DAY, DATEDIFF(DAY, 0, GetDate()), 0) 
    AND (a.EmpKey = {0} OR a.EmpKey IS NULL)
    AND a.Text IS NOT NULL
    Order by a.CreateDate DESC";

    var trackrinfo = db.Database.SqlQuery<TrackrData>(sqlStr, empKey).ToList();

    var TrackrInfo = JsonConvert.SerializeObject(trackrinfo);

    Response.Write(TrackrInfo);
    HttpContext.Response.AppendHeader("Content-Type", "application/json");
    return new EmptyResult();

当我运行此代码时,我收到错误:

input string was not in a correct format.

我已经输入了一个更简单的SQL查询并且没有任何问题地得到了我的结果,所以我认为它与我的查询中的一些引号有关.

这是我的StackTrace:

Source Error:

Line 273 var trackrinfo = db.Database.SqlQuery(sqlStr, empKey).ToList();Line 274:Line 275:

这将是内部格式的问题.它根据堆栈跟踪调用StringBuilder.AppendFormat.该问题与SQL语句中的“{”有关.

只需使用StringBuilder即可完全测试.

下面爆炸了

System.FormatException : Input string was not in a correct format.

var sb = new StringBuilder();
sb.AppendFormat("'{' {0}", 1);

您可以通过加倍{{}来解决这个问题.

var sb = new StringBuilder();
sb.AppendFormat("'{{' {0}", 1);

工作得很好.

{{应该只输出一个{.加倍它逃脱了它.

查看更多关于c# – 输入字符串格式错误#2的详细内容...

  阅读:48次