麻烦其他没有执行

时间:2017-05-08 16:55:35

标签: c# winforms if-statement

我的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();
                    }
                }
            }
        }  

提前致谢。

2 个答案:

答案 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
    }
}