输入字符串的格式不正确,格式为 1 和 2

Posted

技术标签:

【中文标题】输入字符串的格式不正确,格式为 1 和 2【英文标题】:Input string was not in a correct format , with form 1 and 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]里面是什么。 【参考方案1】:

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

【讨论】:

以上是关于输入字符串的格式不正确,格式为 1 和 2的主要内容,如果未能解决你的问题,请参考以下文章

输入字符串的格式不正确 #2

String.Format:输入字符串的格式不正确[关闭]

C#,输入字符串的格式不正确,十进制值

NHibernate - 无法执行查询 - 输入字符串的格式不正确

输入字符串的格式不正确

MySQL 查询中的输入字符串格式不正确