本帖最后由 jiashilong_syit 于 2011-12-22 21:01:50 编辑

解决方案 »

  1.   

    GetString获取指定列的字符串形式的值。
    0和ID不string是数字,当然会错
    可用GetInt32
      

  2.   

    SqlDataReader的GetOrdinal方法。接受一个表示字段名称的字符串,并返回该列的序号。
    GetString不执行任何转换,因此所检索的数据必须已经是字符串
      

  3.   

    ID字段的类型为int,你用GetString()方法当然会报错,换成GetInt32()方法就行了。
    建议不使用DataReader,因为它只读仅向前,虽然速度比DataSet会快那么一丁点,但是不好操作,并且它需要一直连接到数据库,会占用连接池,建议换成DataSet,牺牲的那点速度你感觉不出来,现在的服务器配置不像以前那么低,牺牲一丁点性能但可以得到更多:容易操作、不占用数据库连接池、安全等等。
    如果你换用DataSet,代码写起来也更容易理解:
    int myID=DataSet.Tables[结果表号码或结果表名称].Rows[行号][字段号或字段名];