下边是源码,这个方法是填充列表视图(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方法结束
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方法结束
应该是控件的text啊 txtWordNam.Text
如果 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