小白求教:关于一个数值转换错误的问题。
大家看我写的方法:
private int Id = 0;
public string execteGetReturn(string strSql)
{
//创建连接conn
……
cmd.Connection = conn;
cmd.CommandText = strSql;
string result = (string)cmd.ExecuteScalar();
return result;
}
public void getID()
{
string strSql="select id from voteConfig";
Id = int.Parse(this.execteGetReturn(strSql));
}
结果预览:出现下面的错误:
无法将类型为“System.Int32”的对象强制转换为类型“System.String”。
行 24: string strSql="select id from voteConfig";
行 25: Id = int.Parse(db.execteGetReturn(strSql));
行 26:
行 27: }
请问高手们,如何会出现这种情况呢?如何解决呢?
[解决办法]
string result = (string)cmd.ExecuteScalar();
这句,改为:
string result = Convert.ToString(cmd.ExecuteScalar());
[解决办法]
数据库中 id 是数字类型,而 ExecuteScalar 是 object 类型,也就是说是把数字类型装到 object 类型中,它的运行时类型为 int,而 (string) 转换要求 object 的运行时类型为 string,所以原来的代码会出错。
考虑下面的代码,它是会出错的:
int i = 3;object o = i;string s = (string)o;