输入字符串的格式不正确。 C#SQL

时间:2015-10-01 19:47:14

标签: c# sql-server parsing

我将SQL值放在<td>内,而这一行在它下面导致格式错误,我不知道解析是不正确还是遗漏了什么。请帮忙

litAccordionFooter.Text += "<td style='width: 12.2%;font-weight: bold;'>" 
    + string.Format("{0:C}", (((ds.Tables[1].Rows[0]["TOTAL_AMT"]))
    == DBNull.Value ? 1 
        : decimal.Parse((ds.Tables[1].Rows[0]["TOTAL_AMT"]).ToString())) 
        / ((int.Parse((ds.Tables[1].Rows[0]["TOTAL_QTY"]).ToString())) == 0 
            || ds.Tables[1].Rows[0]["TOTAL_QTY"] == DBNull.Value ? 1 
                : (int.Parse((ds.Tables[1].Rows[0]["TOTAL_QTY"]).ToString())))) + "</td>";

2 个答案:

答案 0 :(得分:1)

正如@JoãoKleberson所说,您应该验证他们不是nullempty,并且他们实际上有intdecimal代表

int     total_Amt = default(int);
decimal total_Qty = default(decimal);

if (decimal.TryParse(ds.Tables[1].Rows[0]["TOTAL_AMT"].ToString(), out total_Qty) &&
        int.TryParse(ds.Tables[1].Rows[0]["TOTAL_QTY"].ToString(), out total_Amt))
{
    var myString = "<td style='width: 12.2%;font-weight:bold;'>" +
    string.Format("{0:C}", total_Amt / total_Qty == 0 ? 1 : total_Qty) + "</td>";
}
else
{
    // The TOTAL_AMT and/or TOTAL_QTY values are not valid to convert them, 
    // verify they are not null and that they have the correct format
}

这样你可以安全地尝试将值转换为所需的类型,如果无法转换,则流程将转换为else子句

答案 1 :(得分:0)

确保此声明:

(ds.Tables [1] .Rows [0] [&#34; TOTAL_AMT&#34;])
(ds.Tables [1] .Rows [0] [&#34; TOTAL_QTY&#34;])

它不是空的或空的