我有时候能登上,有时候不能登上.这是神马原因呢?   明明连好数据库啦的 

解决方案 »

  1.   

    数据库里面有值么·你可以去数据库里面试一下·看看 哪个值是空或者null
      

  2.   

    dataReader这个是你定义的吧 
    看哪里给他赋值的 它不能为空值
      

  3.   

    DataReader读取数据时,必须要保证数据库的有效连接,因为是读取数据的方式是数据库连接模式,而非断开式连接,而且DataReader读取完毕后,要手动释放你可以采用断开式连接模式.
      

  4.   

    DataReader 声明的变量 
    变量.close() 关一下 没用过这个 不知道这个管不管用··
      

  5.   

    while(DataReader.Read())
    {
       //这里写内容
    }
    楼主 判断 这个是否为空了么
      

  6.   

    你执行的SQL语句是带参数的、必须得给参数进来
    看看漏了哪个参数
      

  7.   

    设个段点调啊。看看各项参数有没有值。connection有没有open()。sql语句有没有问题。。很容易的事啊
      

  8.   

     public List<String> GetUserNameList()
            {
                try
                {
                    List<String> list = new List<String>();
                    string sql = "select User_Name from Users";
                    OleDbDataReader dr = DBHelper.ExecuteReader(sql);
                    //SqlDataReader dr = DBHelper.ExecuteReader(sql);
                    while (dr.Read())
                    {
                        list.Add(dr["User_Name"].ToString());
                    }
                    dr.Close();                return list;
                }
                catch
                {
                    return null;
                }        }
      

  9.   

    这是Load的执行过程,从这段代码来看不需要关闭reader,把你excuteReader的代码拿出来看看public virtual void Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler)
    {
        IntPtr ptr;
        Bid.ScopeEnter(out ptr, "<ds.DataTable.Load|API> %d#, loadOption=%d{ds.LoadOption}\n", this.ObjectID, (int) loadOption);
        try
        {
            if (this.PrimaryKey.Length == 0)
            {
                DataTableReader reader2 = reader as DataTableReader;
                if ((reader2 != null) && (reader2.CurrentDataTable == this))
                {
                    return;
                }
            }
            LoadAdapter adapter = new LoadAdapter();
            adapter.FillLoadOption = loadOption;
            adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
            if (errorHandler != null)
            {
                adapter.FillError += errorHandler;
            }
            adapter.FillFromReader(new DataTable[] { this }, reader, 0, 0);
            if (!reader.IsClosed && !reader.NextResult())
            {
                reader.Close();
            }
        }
        finally
        {
            Bid.ScopeLeave(ref ptr);
        }
    }