【发布时间】:2022-10-23 19:49:08
【问题描述】:
我正在使用 c# 和 windows 窗体开发“简历保存和搜索应用程序”。我的问题是当我同时输入电话号码字段和电子邮件字段时,它没有进行正确的搜索。
理论上,当我输入错误的电子邮件并输入正确的电话号码时,数据网格视图不应显示任何信息。但是由于 if 和 else 语句从上到下运行,如果电话号码为真,程序不控制电子邮件字段。我怎样才能解决这个问题?
注意:我将所有“else if”语句更改为“if”语句,但它不起作用。
我的代码:
private void search_Click(object sender, EventArgs e)
{
///search in databese
if (textBox_Name.Text != "")
{
showData("SELECT * FROM BILGILER WHERE NAME LIKE'" + textBox_Name.Text + "%'");
}
else if (textBox_Surname.Text != "")
{
showData("SELECT * FROM BILGILER WHERE SURNAME LIKE'" + textBox_Surname.Text + "%'");
}
else if (textBox_Id.Text != "")
{
showData("SELECT * FROM BILGILER WHERE ID LIKE'" + textBox_Id.Text + "%'");
}
else if (textBox_Phone.Text != "")
{
showData("SELECT * FROM BILGILER WHERE PHONE LIKE'" + textBox_Phone.Text + "%'");
}
else if (textBox_Email.Text != "")
{
showData("SELECT * FROM BILGILER WHERE EMAIL LIKE'" + textBox_Email.Text + "%'");
}
else if (comboBox_Gender.Text != "")
{
if (comboBox_Gender.Text == "Male")
{
showData("SELECT * FROM BILGILER WHERE GENDER LIKE'" + 0 + "%'");
}
else if (comboBox_Gender.Text == "Female")
{
showData("SELECT * FROM BILGILER WHERE GENDER LIKE'" + 1 + "%'");
}
}
else
{
MessageBox.Show("Please enter a information");
}
}
【问题讨论】:
-
这是为什么您需要先制定逻辑然后编写代码来具体实现该逻辑的示例。您构建的这些查询都不包含一个以上的过滤器,那么您怎么可能按多列过滤呢?此外,您使用的是
if...else if,因此一旦您发现填充了一个过滤器字段,您就会停止查找。如果首先确定了逻辑,你就不可能编写代码来做这些事情。您可能仍然无法编写所需的代码,但您不会编写执行无意义的代码的代码。在你知道它必须做什么之前不要编写任何代码。 -
将您的程序与 Olivier Jacot-Descombes 的答案进行比较。
标签: c# if-statement