C# 其他不执行的问题
我的if语句无法100%正常工作 如果if语句的条件为true,则一切正常, 但是当条件不=true时,else部分不执行 这是我第三天尝试用C#进行开发,所以我不知道我是不是做错了。。。如果我正忙着做一个noob,那么对于改进这段代码的建议,我将不胜感激 所以,请帮助if语句和改进代码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
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。您是否使用调试器检查过它?如果是的话,那它做什么呢。如果没有,那么你需要这样做。养成阅读的习惯。在我看来,如果没有行,那么控件将退出,而-其他无法执行。非常感谢,非常感谢您的帮助!非常感谢,非常感谢您的帮助!