我的if语句在100%工作时遇到问题。
当if语句的条件= true时,一切正常, 但是当标准没有&t =真时,其他部分就不会执行。
这是我尝试用C#开发的第3天,所以我不知道我是否只是做错了...如果我正忙着做菜鸟,建议关于改进此代码将受到高度赞赏。
那么请帮助if语句并改进代码?
using (SqlConnection sqlConnection2 = new SqlConnection("Data Source=SCIENTIFICFS;Initial Catalog=TL_ScientificInstruments;Persist Security Info=True;User ID=Reports;Password=Reports"))
{
sqlConnection2.Open();
using (SqlCommand cmd = new SqlCommand("Select * From tbl_ScientificEng_Product_Info Where Syspro_StockCode = '" + product.Trim() + "'", sqlConnection2))
{
SqlDataReader reader2;
reader2 = cmd.ExecuteReader();
while (reader2.Read()) {
if (reader2.HasRows)
{
textBox4.Text = reader2.GetString(0);
textBox5.Text = reader2.GetString(1);
textBox6.Text = reader2.GetString(2);
textBox7.Text = reader2.GetString(3);
textBox8.Text = reader2.GetString(4);
textBox9.Text = reader2.GetString(5);
textBox10.Text = reader2.GetString(6);
label19.Visible = true;
label10.Visible = false;
textBox11.Enabled = false;
textBox12.Enabled = false;
textBox13.Enabled = false;
textBox14.Enabled = false;
textBox15.Enabled = false;
textBox16.Enabled = false;
textBox17.Enabled = false;
button2.Enabled = false;
}
else {
MessageBox.Show("In Else Statement");
using (SqlCommand cmd2 = new SqlCommand("Select top 1 * from tbl_ScientificEng_Product_Info Where Syspro_StockCode like Left('" + product.Trim() + "%',7)", sqlConnection2)) {
SqlDataReader reader3;
reader3 = cmd2.ExecuteReader();
while (reader3.Read()) {
textBox4.Text = reader3.GetString(0);
textBox5.Text = reader3.GetString(1);
textBox6.Text = reader3.GetString(2);
textBox7.Text = reader3.GetString(3);
textBox8.Text = reader3.GetString(4);
textBox9.Text = reader3.GetString(5);
textBox10.Text = reader3.GetString(6);
label19.Visible = false;
label10.Visible = true;
}
//reader3.Close();
}
//reader2.Close();
}
}
}
}
提前致谢。
答案 0 :(得分:4)
并不是else
没有执行,而是当没有行时你永远不会进入循环。看看你在这里做了什么:
while (reader2.Read()) {
if (reader2.HasRows) {
如果读者没有行,则Read()
将返回false
。因此永远不会输入while
循环,if/else
成为一个有争议的点,因为它永远不会被评估。
通常你会在试图读取循环中的那些行之前检查.HasRows
。像这样:
if (reader2.HasRows)
{
while (reader2.Read())
{
// the contents of your "if" block
}
}
else
{
// the contents of your "else" block
}
答案 1 :(得分:1)
可能有错误顺序的代码,请尝试:
if(reader2.HasRows)
{
while(reader2.Read())
{
//code
}
}