下边是源码,这个方法是填充列表视图(LIstView)的,但是本来是有信息的,但是查询却总是查询不到,提示没有信息,但是sql语句又没有错误,我不知道是哪里错了,程序也没报错,只是查不到信息,但是用这段sql语句在数据库直接使用,就可以进行查询
 private void FillListView()
        {
            string wordName;     //单词
            string wordMean;     //词义
            int wordListId;      //所属单词表的Id
            try
            {
                //查找单词的sql语句
                string sql = string.Format("SELECT WordName,WordMean,WordId FROM Word WHERE WordListId = (SELECT SWordListId FROM WordList WHERE SWordListName LIKE '%{0}%') AND WordName LIKE '%{1}%'",cboWordList.Text,txtWordName);             
                
                
  
                //创建Command对象
                SqlCommand command = new SqlCommand(sql,DBHelper.connection);                DBHelper.connection.Open();    //打开连接数据库                SqlDataReader dataReader = command.ExecuteReader();    //执行查询命令                lvWord.Items.Clear();     //清楚ListView中的所有项                if (!dataReader.HasRows)
                {
                    MessageBox.Show("抱歉,没有找到您要找的单词!", "结果提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    //将查询到的结果循环写到ListView中
                    while (dataReader.Read())
                    {
                        //将从数据库中读取的单词、词义、单词所在表赋给相应的变量
                        wordName = (String)dataReader["WordName"];
                        wordMean = (String)dataReader["WordMean"];
                        //创建一个ListView项
                        ListViewItem lviWord = new ListViewItem(wordName);
                        //将ID放在Tag中
                        lviWord.Tag = (int)dataReader["WordId"];
                        //向ListView中添加一个新项
                        lvWord.Items.Add(lviWord);
                        lviWord.SubItems.AddRange(
                            new string[] {wordMean});                    } //while 结束                }  //else结束
                
                dataReader.Close();   //关闭数据库连接            }  //try结束
            catch (Exception ex)
            {
                MessageBox.Show("查询数据库出错!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
                Console.WriteLine(ex.Message);
            }
            finally
            {
                DBHelper.connection.Close();    //关闭数据库连接
            }
        }   //FillListView方法结束
        

解决方案 »

  1.   

                   string sql = string.Format("SELECT WordName,WordMean,WordId FROM Word WHERE WordListId = (SELECT SWordListId FROM WordList WHERE SWordListName LIKE '%{0}%') AND WordName LIKE '%{1}%'",cboWordList.Text,txtWordName);            应该是txtWordNam.Text吧?:-)
      

  2.   

    你那{1}对应的是控件ID啊  txtWordName
    应该是控件的text啊 txtWordNam.Text
      

  3.   

    先response.write出SQL的字符串,拷贝到sql server中直接运行,看看是否可以通过,可以的话,再往下调试下去。
      

  4.   

    string sql = string.Format("SELECT WordName,WordMean,WordId FROM Word WHERE WordListId = (SELECT SWordListId FROM WordList WHERE SWordListName LIKE '%{0}%') AND WordName LIKE '%{1}%'",cboWordList.Text,txtWordName);  
    如果 txtWordName 是TextBox的话,就要txtWordName.Text,不过我想应该不会犯这种错误吧?你的语有非常可能会出错SELECT WordName,WordMean,WordId FROM Word WHERE WordListId = 
    (SELECT TOP 1 SWordListId FROM WordList WHERE SWordListName LIKE '%{0}%') AND WordName LIKE '%{1}%'",cboWordList.Text,txtWordName
      

  5.   

    SELECT WordName,WordMean,WordId FROM Word WHERE WordListId = (SELECT TOP 1 SWordListId FROM WordList WHERE SWordListName LIKE '%{0}%') AND WordName LIKE '%{1}%'",cboWordList.Text,txtWordName这里不加TOP 1的话,当你的结果多于一个时,肯定就出错了
      

  6.   

    txtWordName 应该是控件的text啊 txtWordNam.Text
      

  7.   

    对, txtWordNam 放那的话是一长串的控件地址,要加.text