我试图接收一个字符串并将其转换为整数,代码为:
int menu = 3
int orden = 0;
string query = @"select max(oppord)+1 as orden
from rhlibry.vaoppfi
where pincor = " + menu;
OdbcConnection cn = new OdbcConnection("dsn=RHLIBRY;uid=PC00;pwd=PC00;");
OdbcCommand cmd = new OdbcCommand(query, cn);
cn.Open();
OdbcDataReader oa = cmd.ExecuteReader();
while (oa.Read())
{
orden = Int32.Parse(oa["orden"].ToString());
}
return orden;
sql查询返回" orden"以字符串格式,我需要将其转换为整数。
行orden = Int32.Parse(oa["orden"].ToString());
返回System.FormatException类型的错误。
为什么呢?我错了吗?
请帮帮我!
由于
答案 0 :(得分:2)
这可能是因为您的查询返回空值。
假设您有一个Category表,其Id列的值为1,2,3。 如果您运行此查询:
SELECT Max(Id)+1 As Id From Category WHERE Id = -1
您将收到以下结果:
Id
----------
NULL
因此,当您使用Int32.Parse(oa["Id"].ToString())
时,您将收到FormatException。
作为修复,您可以使用:
SELECT ISNULL(Max(Id),0)+1 As Id From Category WHERE Id = -1
此外,如果您的业务逻辑允许,您可以删除条件。
同样在C#方面,您可以使用int.TryParse():
int id = 0;
var idObject= oa["Id"];
if (idObject!=null)
int.TryParse(oa["Id"].ToString(), out id);