这个异常工作了一半,搜索是可以的,但是从“catch”不会弹出一条消息-“搜索错误”,当我输入数据库中没有的错误单词时,什么也没有发生,有些建议?
try
{
Con.Open();
string query = "Select * from Medicine_tbl where MedName ='" + SearchTb.Text + "'";
SqlCommand comn = new SqlCommand(query, Con);
SqlDataReader reader;
reader = comn.ExecuteReader();
while (reader.Read())
{
Mednametb.Text = reader.GetValue(0).ToString();
Bptb.Text = reader.GetValue(1).ToString();
sptb.Text = reader.GetValue(2).ToString();
qtytb.Text = reader.GetValue(3).ToString();
companycb1.Text = reader.GetValue(4).ToString();
}
Con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error in searching." + ex);
}
}
我找过例子,词序是一样的。
也许问题与以下事实有关:当数据库中找不到任何内容时,不会调用 MessageBox.Show。仅当结果中至少有一行时,您的 reader.Read() 循环才会执行。试试这个:
try
{
Con.Open();
string query = "Select * from Medicine_tbl where MedName ='" + SearchTb.Text + "'";
SqlCommand comn = new SqlCommand(query, Con);
SqlDataReader reader;
reader = comn.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Mednametb.Text = reader.GetValue(0).ToString();
Bptb.Text = reader.GetValue(1).ToString();
sptb.Text = reader.GetValue(2).ToString();
qtytb.Text = reader.GetValue(3).ToString();
companycb1.Text = reader.GetValue(4).ToString();
}
}
else
{
MessageBox.Show("No data found.");
}
Con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error in searching: " + ex.Message);
}
reader.HasRows() 检查是否有返回的行。我对 catch 进行了修改,以使用 ex.Message 显示异常的详细消息。
希望这可以帮助你:)