当前位置: 代码迷 >> ASP.NET >> 小白关于一个数值转换异常的有关问题
  详细解决方案

小白关于一个数值转换异常的有关问题

热度:991   发布时间:2013-02-25 00:00:00.0
小白求教:关于一个数值转换错误的问题。
大家看我写的方法:
  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,所以原来的代码会出错。
考虑下面的代码,它是会出错的:
C# code
int i = 3;object o = i;string s = (string)o;
  相关解决方案