小弟刚学C#以下代码提示说DS.READ()已关闭,各位大哥大姐帮帮忙看看啥地方有错  
      private void fillveiw()
        {
            string a;
            string b;
            string c;
            string ConnectionString = "Data Source=orcl; User Id=fzsvn; Password=fzsvn";
            OracleConnection conn = new OracleConnection(ConnectionString);
            conn.Open();
            string sql = "select a,b,c From test_user where a ='"+tuser .Text +"'";
            OracleCommand newcomd = new OracleCommand(sql, conn);
            OracleDataReader ds;
         
            ds = newcomd.ExecuteReader();            LV.Items.Clear();            if (!ds.HasRows)
            { MessageBox.Show("无信息!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }            else {
                while (ds.Read())                {
                
                a=(string)ds["a"];
                b=(string)ds["b"];
                c=(string)ds["c"];
               ListViewItem LV1=new ListViewItem();
               LV.Items.Add(LV1);
               LV1.SubItems.AddRange(new string[] {a,b,c});
               ds.Close();
                }            }
         
        }

解决方案 »

  1.   

    把ds.Close();移到while块之外
    while (ds.Read())  {
        
      a=(string)ds["a"];
      b=(string)ds["b"];
      c=(string)ds["c"];
      ListViewItem LV1=new ListViewItem();
      LV.Items.Add(LV1);
      LV1.SubItems.AddRange(new string[] {a,b,c});
        }
    ds.Close();
      

  2.   

     while (ds.Read())  {
        
      a=(string)ds["a"];
      b=(string)ds["b"];
      c=(string)ds["c"];
      ListViewItem LV1=new ListViewItem();
      LV.Items.Add(LV1);
      LV1.SubItems.AddRange(new string[] {a,b,c});
      ds.Close();
      }
    读了一次就关闭了吧
    放外面啊
      

  3.   

    谢谢了!但是现在发现一个新问题。就是在LISTVIEW显示不出我要查询出来的值。