private static SqlConnection con = DBOperator.CreateConnection();
private static SqlCommand cmd = null;
        private static SqlDataReader dr = null;        public string[]  getSupplyType(String sql)
        {            
            string[] result = null;
            try
            {
                int i = 0;
                con.Open();
                cmd = new SqlCommand(" Select Distinct(SupplyType) From SupplyTypes", con);//这SQL中查询分析器中没有任何问题
                dr = cmd.ExecuteReader();
                while (dr.Read())//这句话,就抛出异常?
                {
                    result[i] = "";
                    result[i] = dr.GetString(0);
                    i++;
                }
                dr.Close();
                con.Close();
            }
            catch
            {
                throw new Exception("数据库表 getSupplyType出错,退出!");
            }
            finally
            {
                if (con != null)
                {
                    con.Close();
                }
            }
            return result;
        }
while (dr.Read())//这句话,就抛出异常?
感觉有点怪!

解决方案 »

  1.   

    dr没东西?while 里面?去掉 try catch 看看
      

  2.   

    NullReferenceException ,抛这个异常!!
      

  3.   

    Select Distinct(SupplyType) From SupplyTypes   这个在SQL里面执行后是有很多条数据的啊!!!
      

  4.   

    那你那个String sql怎么就没见你用上啊
      

  5.   

    String sql   本来是 Select Distinct(SupplyType) From SupplyTypes   这个字符串值的!!后来我看报错,COPY来的
      

  6.   


     while (dr.Read())//这句话,就抛出异常? 
                    { 
                       // result[i] = ""; 
                        result[i] = dr.GetString(0); 
                        i++; 
                    } 
      

  7.   

    感觉是你的sql语句问题你,应为dr里没有东西。
      

  8.   

    在SQL查询分析器中是正常的啊,异常就是null异常,问题在哪啊?郁闷
      

  9.   

    你的 private static SqlConnection con = DBOperator.CreateConnection(); 
    private static SqlCommand cmd = null; 
            private static SqlDataReader dr = null; 
    怎么都是static的 这样不好 ....
      

  10.   

    while (dr.Read())//这句话,就抛出异常? 
    这句是异常的话,应该是
    此时dr为null
      

  11.   

    con.Open();
                    cmd = new SqlCommand(" Select Distinct(SupplyType) From SupplyTypes", con);//这SQL中查询分析器中没有任何问题
                    dr = cmd.ExecuteReader(); 未给cmd.SqlConnection 属性赋值
    改成下面试试con.Open();
                    cmd = new SqlCommand(" Select Distinct(SupplyType) From SupplyTypes", con);//这SQL中查询分析器中没有任何问题
                    cmd.Connection=con;    //添加这句
                    dr = cmd.ExecuteReader(); 
      

  12.   


    添加了cmd.Connection=con; 这句,还是一样的错误!!
      

  13.   

    会不会是你在执行循环的时候,另一个线程关闭了dr。如果dr有值,是不会异常的
      

  14.   

    多谢大哥们的帮忙,问题我已经找到了,是我数组没有初始化导致的NULL,其实和sqldatareader一点关系都没有。只能怪自己学艺不精啊,浪费了大家的时间了,不好意思!!!!!
      

  15.   

    string[] result = null;  <---------------- 傻孩子..你创建数组啊