首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-02-02 
小白求教:关于一个数值转换错误的问题。大家看我写的方法:private int Id 0public string execteGetRetu

小白求教:关于一个数值转换错误的问题。
大家看我写的方法:
  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; 

热点排行