C# 我的程序似乎跳过了我的;如果;陈述

C# 我的程序似乎跳过了我的;如果;陈述,c#,if-statement,C#,If Statement,我有一个C#应用程序,它将信息提交到Access数据库。我填写三个必填框,然后单击“提交”。当用户单击按钮时,脚本应以以下方式响应: 第一步。查看数据库表A,查看数据库中是否存在textBox1中的值 第二步。如果该值存在,则将textBox1、textBox2和textBox3的值分别添加到数据库表B列中 第三步。如果三个文本框中的任何一个为空,则显示一条消息 第四步。如果textBox1中的值不在数据库表中,则显示一条消息。(最终,我计划用数据库字段的默认填充替换消息) 问题:当我运行程序时

我有一个C#应用程序,它将信息提交到Access数据库。我填写三个必填框,然后单击“提交”。当用户单击按钮时,脚本应以以下方式响应:

第一步。查看数据库表A,查看数据库中是否存在textBox1中的值

第二步。如果该值存在,则将textBox1、textBox2和textBox3的值分别添加到数据库表B列中

第三步。如果三个文本框中的任何一个为空,则显示一条消息

第四步。如果textBox1中的值不在数据库表中,则显示一条消息。(最终,我计划用数据库字段的默认填充替换消息)

问题:当我运行程序时,在上述任何情况下,结果都是上面的第4步。它似乎跳过了第一个“如果”语句,直接跳到“其他”结果。

如果您能帮助解决此问题,我们将不胜感激!“私人无效”代码如下所示。 提前谢谢



如果它跳到
If(reader.HasRows)
else
,而不抛出任何异常,则
reader
不能为
null
,并且它的
HasRows
属性必须为
false
。这意味着您的查询已成功执行,但未返回任何行


您可以尝试手动运行
select
语句,这可能有助于您了解问题所在。很可能,您在文本框中键入的内容与任何
cust\u name
值都不匹配。

调试时会发生什么?有错误吗?当计算条件时,对象的状态是什么?可能某个值与您期望的值不同?现在这是一个相当严重的缩进滥用情况。我怀疑如果您实际调试这个东西,您会发现
reader
null
。。。你认为这是为什么?提示:仔细查看你的连接样板代码,你遗漏了一些东西……旁注:一定要处理好你的读卡器和连接。@Cicada它就像一个更糟糕的
private void button1_Click(object sender, EventArgs e)
{
     OleDbCommand cmd = new OleDbCommand("select * from script_Orders where cust_Name = @UserID", vcon);
     OleDbParameter param = new OleDbParameter();
     param.ParameterName = "@UserID";
     param.Value = textBox1.Text;
     cmd.Parameters.Add(param);
     OleDbDataReader reader = cmd.ExecuteReader();
     {    
         if (reader.HasRows)
         {
             if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
             {
                 MessageBox.Show("You must fill in all fields.");
                 return;
             }
             else
             {
                 OleDbCommand dbCommand;
                 OleDbDataReader dbReader;
                 new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Search\Database.accdb");
                 dbCommand = new OleDbCommand("select count(*) as Record_Count from script_received", vcon);
                 dbReader = dbCommand.ExecuteReader();

                  if (dbReader.Read() == true)
                      rowCount = dbReader["Record_Count"].ToString();
                  else
                      return;

                  var date = DateTime.Now.ToString("MM/dd/yyyy");
                  {
                      using (OleDbCommand command = new OleDbCommand("INSERT INTO script_Received (script, qty, emp_id, received_Date) VALUES (@script,@qty,@emp_Id,@rec_date)"))
                      {
                          command.CommandType = CommandType.Text;
                          command.Parameters.Add("@script", OleDbType.Integer).Value = textBox1.Text;
                          command.Parameters.Add("@qty", OleDbType.VarChar).Value = textBox2.Text;
                          command.Parameters.Add("@emp_id", OleDbType.VarChar).Value = textBox3.Text;
                          command.Parameters.Add("@rec_date", OleDbType.Date).Value = date;
                          command.Connection = vcon;
                          command.ExecuteNonQuery();
                      }
                      this.textBox1.Clear();
                      this.textBox2.Clear();
                      this.textBox1.Focus();
                  }
             }
        }
        else
        {
            MessageBox.Show("The value of textBox1  is not in the orders table");
            return;
        }
    }
}