另外,在调试时查看了 dr(DataRow) 中的内容,发现该字段的类型确实为 System.Int64,然而转换却不成功
(其它字段转换正确)

解决方案 »

  1.   

    发现其它一些操作也导致失败:foreach(object o in dr.ItemArray ){}
    bool isnull = (dr[1] == null)?true:false;
    String str  = dr.ItemArray [1].ToString ();
    System.Type t = dr[1].GetType ();当试图执行以上操作时,就发生失败,,,,惨也。。
      

  2.   

    应该用long就行了,看你的变量dr,是否用的是SqlDataReader?
    那试试这个
    data=dr.GetInt64(index);
    or
    data=(long)dr.GetValue(index);
      

  3.   

    sorry,,,,,发现错误不是数据库,转换,,,而是我自己。在我的“解决方案”中,有2个工程:data负责数据库连接,test暂时用于测试;
    以前,data输出在自己目录,test也引用到该目录。但后来我改变了data的输入目录,又没有更改test的引用位置。因此,运行时,test总是调用“老”版本的data,从而发生了错误(当我发现即使修改data源代码,也无法改变执行效果时)。现在问题已经解决了,,,希望大家别犯我这个错误