public static DataTable dt;//存储数据的DataTable
.....
.....
void initdata()
{

dt= sql.ExcuteDataTable("SELECT * FROM QuestionPD");//从数据库读取一个Datatable 存到全局的静态变量里
。。


}void test()
{
for (int r = 0; r < dt.Rows.Count; r++)
//在另一个函数中调用读取到的数据 就出现“未将对象引用设置到对象的实例”错误,请问如何解决?
{
.....
}
}

解决方案 »

  1.   

    补充一下,在调用test之前,已经调用过了 initdata函数,所以,dt里面应该是有值的
      

  2.   

    DataTable dt=new DataTable();有对象为 null
      

  3.   

    加上判断
    if(dt!=null)
    {
       for (int r = 0; r < dt.Rows.Count; r++) 
       { 
            ..... 
       } 
    }
      

  4.   

    谢谢回复这样也是没用的,因为new一下就是一个新的表,我要的就是initdata()的时候获得的dt
      

  5.   

    检查下你for循环内部,是否是内部引发的异常,当然之前如果加上dt的null检查,就更容易确定了。
      

  6.   

    如果是dt为null,请在initdata函数返回前,检查是否为null,特别是sql.ExcuteDataTable是否可能返回null
      

  7.   

    建议检查sql语句是否正确返回了对象,检查执行语句之后表对象是否为空
      

  8.   

    initdata()返回值是NULL的话,明显出错就在SQL里啊
      

  9.   

    good good study ,day day up
      

  10.   


    出现“未将对象引用设置到对象的实例”错误,肯定是因为dt为空,加上判断,就能解决了。至于说“还是没法获得dt里面的数据”,那就是另外的问题了,你需要把其他相关代码贴上来。
      

  11.   

    用ExecuteNonQuery方法做一下 如果等于0说明是SQL语句问题
      

  12.   

    在读取某一个字段的时候,判断一下是否是DBNull
      

  13.   

    应该加上一个判断,方便你调试,也是一种比较健壮的编程习惯:
    if(dt!=null) {
        ...
    }
      

  14.   

    用之前,最好判断一下是否为null
      

  15.   

    首先判断dt是否为null
    然后在去操作他
    还有就是public static DataTable dt; static?
      

  16.   

    void test() 

    for (int r = 0; r < dt.Rows.Count; r++) 
    //在另一个函数中调用读取到的数据 就出现“未将对象引用设置到对象的实例”错误,请问如何解决? 

    ..... 

    }如果dt 为空的话,dt.Rows.Count=0,for循环根本就不执行,所以如果执行到for 循环里 出错的话,dt 应该是有值的,可能是其他原因出错。比如,如果你数据库里有DateTme 类型的数据,但是没有赋值的话,在前台通过 dt.Rows[i][j]取值的话,也会报这个错的,建议楼主好好检查一下
      

  17.   

    public static DataTable dt;//存储数据的DataTable 
    ..... 
    ..... 
    void initdata() 

     
    dt=new DataTable();dt= sql.ExcuteDataTable("SELECT * FROM QuestionPD");//从数据库读取一个Datatable 存到全局的静态变量里 
    。。 
     
     
    } void test() 

    if(dt!=null && dt.Rows.count >0)
    {
    for (int r = 0; r < dt.Rows.Count; r++) 
    //在另一个函数中调用读取到的数据 就出现“未将对象引用设置到对象的实例”错误,请问如何解决? 

    ..... 

    }
    }
      

  18.   

    实例化
    public static DataTable dt=new DataTable();//存储数据的DataTable 
      

  19.   

    肯定是DataTable里有东西是null的
      

  20.   

    这需要调试一下的  你可以在 dt= sql.ExcuteDataTable("SELECT * FROM QuestionPD"); 下一语句加入断点 这样你执行的时候就可以知道  获得的dt 是否为NULL 如果是则为你的SQL语句写错了…