con.Open();
                OleDbCommand com = con.CreateCommand();
                com.CommandText = "select * from filetable";
                OleDbDataReader dr = com.ExecuteReader();
                while (dr.Read())
                {
                    label1.Text += dr.GetString(dr.GetOrdinal("filepath"))+"\n";
                }
                dr.Close();
                con.Close();只要 查询到 某个字段为空就出现在异常。 access数据库我已经设置可以为空。

解决方案 »

  1.   

    异常应该出现在这里 
    加个判断就好了啊
    label1.Text += dr.GetString(dr.GetOrdinal("filepath"))+"\n"; 
      

  2.   

    加个判断的话。
    出现异常where(dr)后面的数据就读取不出来了。
    怎么解决 大哥们说清楚点。
      

  3.   

    应该是null的时候才报错吧
      

  4.   

    补充下:    con.Open();
                OleDbCommand com = con.CreateCommand();
                com.CommandText = "select filepath from filetable where author='发射点'";
                OleDbDataReader dr = com.ExecuteReader();
                while (dr.Read())
                {
                    label1.Text = dr.GetString(dr.GetOrdinal("filepath"));
                }
                dr.Close();
                con.Close();用OleDbDataReader 循环读取就出错,提示这个InvalidCastException异常。
    但用 label1.Text = com.ExecuteScalar().ToString ();
    这个就不出异常。  怎么回事  高手指点下。  分不够再加。