我的数据ID字段是int类型,然后我用DataReader读取出来,但是报错,说:无法将类型为“System.Int32”的对象强制转换为类型“System.String”我的代码是这样的            if (read.HasRows)
            {
                read.Read();
                int ID = Convert.ToInt32(read.GetString(1)); 
            }
为什么我这样转换不成功,我实在想不清楚啊,我是刚接触.NET不久的,请各位大虾请教,不胜感激!
read.GetString(1)); 返回的不是string类型的值吗,为什么我不int ID = Convert.ToInt32(read.GetString(1)); 
写就报错:无法将类型为“System.Int32”的对象强制转换为类型“System.String”

解决方案 »

  1.   

    int ID = Convert.ToInt32(read.GetString(1).ToString()); --你试一下 
      

  2.   


    用这个读看看read["索引"] 或 read["列名"]
      

  3.   

    ID = Int32.Parse(read.GetString(1));  
    ID = Int32.Parse(read.GetString(1));--再试试这个
      

  4.   

     int ID = Convert.ToInt32(read[1].ToString());  
      

  5.   

    你的ID是第一个字段吗 如果是索引是从0开始
    另外,ID是int型,就直接用read.GetInt32就OK了
      

  6.   


    if(objReader.HasRows)
    {
      if(objReader.Read())
      {
            //int ID = Convert.ToInt32(objReader["列名"].ToString());
            //int ID = Convert.ToInt32(objReader[索引号].ToString());
            //int ID = Convert.ToInt32(objReader.GetString(1).ToString());
      }
    }
      

  7.   

    你这个read.GetString(1)读出来的数据可以转换成数字不。。有其他字符没?
      

  8.   

    一运行到read.GetString(1)就报错了,说:无法将类型为“System.Int32”的对象强制转换为类型“System.String”我用read.GetInt(1)就没有问题,但我不明白为什么用read.GetString(1)读就不能读,转换不了。
      

  9.   

         那楼主你要检查一下你的数据,不要使用read.GetString(1)换成列名,看看取出的数据是什么类型的再考虑转换,这个应该不是你转换的方法使用错误!
      

  10.   

    有点意思这个异常,楼主你肯定以为是Convert.ToInt32的参数不匹配但实际上这个异常是GetString内部报出来的,也就是GetString内部就已经报异常了GetString(i)会取这个DataRow的第i列的对象并尝试将其转化为string而你这里的第i列可能本身就是个int所以就出错了所以你可以这样
    int ID = Convert.ToInt32(read.GetInt(1).ToString());  
    或者直接这样
    int ID = read.GetInt(1);