Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 其他不执行的问题_C#_Winforms_If Statement - Fatal编程技术网

C# 其他不执行的问题

C# 其他不执行的问题,c#,winforms,if-statement,C#,Winforms,If Statement,我的if语句无法100%正常工作 如果if语句的条件为true,则一切正常, 但是当条件不=true时,else部分不执行 这是我第三天尝试用C#进行开发,所以我不知道我是不是做错了。。。如果我正忙着做一个noob,那么对于改进这段代码的建议,我将不胜感激 所以,请帮助if语句和改进代码 using (SqlConnection sqlConnection2 = new SqlConnection("Data Source=SCIENTIFICFS;Initial Catalog

我的if语句无法100%正常工作

如果if语句的条件为true,则一切正常, 但是当条件不=true时,else部分不执行

这是我第三天尝试用C#进行开发,所以我不知道我是不是做错了。。。如果我正忙着做一个noob,那么对于改进这段代码的建议,我将不胜感激

所以,请帮助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();
                    }
                }
            }
        }  

提前感谢。

可能有一些代码顺序错误,请尝试:

if(reader2.HasRows)
{
    while(reader2.Read())
    {
        //code
    }
}

可能有一些代码顺序错误,请尝试:

if(reader2.HasRows)
{
    while(reader2.Read())
    {
        //code
    }
}

这并不是因为
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
}

这并不是因为
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
}

如果您在调试器中中断并遵循它,它将采取什么路径?您是否调试了代码并检查了局部变量?我猜
reader2.Read()
仅当
reader2.HasRows
true
时才会返回
true
,因此不要点击
else,
循环已退出。您是否已使用调试器检查过它?如果是的话,那它做什么呢。如果没有,那么你需要这样做。养成阅读的习惯。在我看来,如果没有行,那么控件就会从
中退出,而
-否则
将无法执行。如果在调试器中中断并执行它,会采取什么路径?是否已通过代码调试并检查了局部变量?我想
reader2.Read()
仅当
reader2.HasRows
true
时才返回
true
,因此循环已退出,而不是点击
else。您是否使用调试器检查过它?如果是的话,那它做什么呢。如果没有,那么你需要这样做。养成阅读的习惯。在我看来,如果没有行,那么控件将退出
,而
-其他
无法执行。非常感谢,非常感谢您的帮助!非常感谢,非常感谢您的帮助!