【问题标题】:Input string was not in a correct format , with form 1 and 2输入字符串的格式不正确,格式为 1 和 2
【发布时间】:2017-08-25 22:43:16
【问题描述】:

为什么这么说
mscorlib.dll 中发生了“System.FormatException”类型的未处理异常

附加信息:输入字符串的格式不正确。

这是我的代码

 public  int transCode = 0;

        con.Open();
        cmd = new SqlCommand("SELECT MAX(TransactionCode) FROM TRANSACTIONS",con);
        rdr = cmd.ExecuteReader();

        while (rdr.Read())
        {
           transCode = Convert.ToInt32(rdr[0].ToString()); // Here is the     line where the problem go
        }

        con.Close();

【问题讨论】:

  • 你检查过rdr[0]里面有什么吗?
  • TransactionCode在数据库中是什么类型?你为什么要把它转换成字符串呢?如果它已经是int,请使用rdr.GetInt32(0)。如果不是,您必须问自己为什么,因为您想将其转换为一个。
  • 最好的调试方法是使用 SQL Server Management Studio (SSMS) 并将查询输入到新的查询视图中。 SSMS 中的调试消息比 c# 好得多。检查 SSMS 中的结果以确保 TransactionCode 值都是整数。
  • 您可能没有转换数字。试试Int32.tryParse方法,不直接解析,用dabugger fot show rdr[0]里面是什么。

标签: c# button


【解决方案1】:

此异常意味着Reader 返回的值不能转换为Int32。您可能有一个 NULL 或一个非整数 TransactionCode 值。尝试在调试器中检查该值以查看该值的实际外观,或者重新考虑它是否始终是 Int32 值。

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2013-08-22
    相关资源
    最近更新 更多