public void SearchQusetionByDifficulty() 
        {
            string question;//成绩
            string optionA; //答案A
            string optionB;//答案B
            string optionC;//答案C
            string optionD;//答案D
            string questionAnswer;//答案
            string questionDifficulty;//难度
            string chazhao= cboSeeAbout.Text;            string sql = string.Format(@"select Question,OptionA,OptionB,OptionC,
                                    OptionD,QuestionAnswer,QuestionDifficulty from
                                    dbo.Question where QuestionDifficulty like '%{0}%'",chazhao);
            try
            {
                SqlCommand command = new SqlCommand(sql, DBHelper.connection);
                DBHelper.connection.Open();                SqlDataReader dataReader = command.ExecuteReader();
                listView1.Items.Clear();
                if (!dataReader.HasRows)
                {
                    MessageBox.Show("抱歉没有你要找的用户");
                }
                else
                {
                    //将查到的结果循环写到ListView中
                    while (dataReader.Read())
                    {
                        //将从数据库中读取到的赋给相应的变量
                        ListViewItem item =
                            new ListViewItem(dataReader["Question"].ToString());
                        listView1.Items.Add(item);
                        item.SubItems.AddRange(new string[]{
                            dataReader["OptionA"].ToString(),
                            dataReader["OptionB"].ToString(),
                            dataReader["OptionC"].ToString(),
                            dataReader["OptionD"].ToString(),
                            dataReader["Answer"].ToString(),
                            dataReader["Difficulty"].ToString()});
                        listView1.Items.Add(item);
                    }
                }            }
            catch (Exception ex)
            {                MessageBox.Show("数据库读取失败");
                MessageBox.Show(ex.Message);
            }
            finally
            {
                DBHelper.connection.Close();
            }
            
        }我希望写一个方法当点击窗体上的查询时``把数据库的数据读取出来加载到listView中```但我不知道哪里写错了``高手们指点下```- -代码写的乱``不好意思

解决方案 »

  1.   

    listView1.Columns.Add("成绩"); //先添加列名listView1.Columns.Add("答案A");
    listView1.Columns.Add("答案B");
    listView1.Columns.Add("答案C");
    listView1.Columns.Add("答案D");
    listView1.Columns.Add("答案");
    listView1.Columns.Add("难度");
    while (dataReader.Read())
    {
    ListViewItem item =new ListViewItem(dataReader["Question"].ToString());
    item.SubItems.AddRange(new string[]{
    dataReader["OptionA"].ToString(),
    dataReader["OptionB"].ToString(),
    dataReader["OptionC"].ToString(),
    dataReader["OptionD"].ToString(),
    dataReader["Answer"].ToString(),
    dataReader["Difficulty"].ToString()});
    listView1.Items.Add(item);  //只需要添加ListViewItem即可}
    listView1.View = View.Details;  //以详细信息显示
      

  2.   

    public void SearchQusetionByDifficulty() 
            {
                string question;//成绩
                string optionA; //答案A
                string optionB;//答案B
                string optionC;//答案C
                string optionD;//答案D
                string questionAnswer;//答案
                string questionDifficulty;//难度
                string chazhao= cboSeeAbout.Text;            string sql = string.Format(@"select Question,OptionA,OptionB,OptionC,
                                        OptionD,QuestionAnswer,QuestionDifficulty from
                                        dbo.Question where QuestionDifficulty like '%{0}%'",chazhao);
                try
                {
                    SqlCommand command = new SqlCommand(sql, DBHelper.connection);
                    DBHelper.connection.Open();                SqlDataReader dataReader = command.ExecuteReader();
                    listView1.Items.Clear();
                        listView1.Columns.Add("成绩"); 
                           listView1.Columns.Add("答案A"); 
                        listView1.Columns.Add("答案B"); 
                        listView1.Columns.Add("答案C"); 
                        listView1.Columns.Add("答案D"); 
                        listView1.Columns.Add("答案"); 
                        listView1.Columns.Add("难度"); 
                    if (!dataReader.HasRows)
                    {
                        MessageBox.Show("抱歉没有你要找的用户");
                    }
                    else
                    {
                        //将查到的结果循环写到ListView中
                           while (dataReader.Read()) 
                        { 
                           ListViewItem item =new ListViewItem(dataReader["Question"].ToString()); 
                           item.SubItems.AddRange(new string[]{ 
                           dataReader["OptionA"].ToString(), 
                           dataReader["OptionB"].ToString(), 
                           dataReader["OptionC"].ToString(), 
                           dataReader["OptionD"].ToString(), 
                           dataReader["Answer"].ToString(), 
                           dataReader["Difficulty"].ToString()}); 
                           listView1.Items.Add(item);  
                           } 
                        listView1.View = View.Details;  
                    }            }
                catch (Exception ex)
                {                MessageBox.Show("数据库读取失败");
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    DBHelper.connection.Close();
                }
                
            }
      

  3.   

    这些我都设置过了``而且我运行以后`可以显示第一条数据`但显示不了第二条数据``爆出错误是"
    不能在多处添加或插入项"".必须首先将其从当前位置移除或将其克隆.
    参数名:item
      

  4.   

    把while改成:
    ListViewItem item =new ListViewItem();
    item.Text=dataReader["Question"].ToString(); 
    item.SubItems.Add(dataReader["OptionA"].ToString()); 
    item.SubItems.Add(dataReader["OptionB"].ToString()); 
    item.SubItems.Add(dataReader["OptionC"].ToString()); 
    item.SubItems.Add(dataReader["OptionD"].ToString()); 
    item.SubItems.Add(dataReader["Answer"].ToString()); 
    item.SubItems.Add(dataReader["Difficulty"].ToString()); 
    listView1.Items.Add(item); 
    应该没问题啊
      

  5.   

    不能在多处添加或插入项"".必须首先将其从当前位置移除或将其克隆===>两处用到同一数据源导致的错误。建议在第二处使用处用clone()方法。即   : 数据源.clone()即可。