输入字符串的格式不正确,格式为 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的主要内容,如果未能解决你的问题,请参考以下文章