C#代码执行,数据库表成功更新但仍然出错

时间:2018-01-17 08:27:43

标签: c# sql sql-server-2008

我的代码成功执行并且它也更新了数据库中的表,但仍然会返回我失败的指定错误。

这是我的代码:

private void button2_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrEmpty(textBox2.Text) && !string.IsNullOrEmpty(textBox3.Text) && !string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrEmpty(comboBox1.Text) && !string.IsNullOrEmpty(comboBox2.Text))
    {
        if (textBox3.Text == textBox4.Text)
        {

            SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-TAACMGJ\SQLEXPRESS;Initial Catalog=libman;Integrated Security=True");

            SqlCommand cmd = new SqlCommand("UPDATE logdat set pass=@pass WHERE uname=@uname AND sec_que=@sec_que AND sec_ans=@sec_ans AND type=@type", con);

            cmd.Parameters.AddWithValue("@uname", textBox1.Text);
            cmd.Parameters.AddWithValue("@sec_ans", textBox2.Text);
            cmd.Parameters.AddWithValue("@pass", textBox3.Text);
            cmd.Parameters.AddWithValue("@sec_que", comboBox1.Text);
            cmd.Parameters.AddWithValue("@type", comboBox2.Text);


            SqlDataAdapter da = new SqlDataAdapter(cmd);

            try
            {
                DataTable dt = new DataTable();
                con.Open();
                da.Fill(dt);
                cmd.ExecuteNonQuery();
                con.Close();

                if (dt.Rows.Count > 0)
                {
                    MessageBox.Show("Password Reset Successfull!!");
                    this.Close();
                }

                else
                {
                    MessageBox.Show("Password Reset Failed!! Re-Enter Details.");
                    reset();
                }

            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }


        }
        else
        {
            MessageBox.Show("Password Confirmation Failed!!");
            textBox3.Text = "";
            textBox4.Text = "";
        }

    }
    else
    {
        MessageBox.Show("Please Fill All The Details!!");
    }
}

1 个答案:

答案 0 :(得分:2)

ExecuteNonQuery不会返回任何数据

var count = cmd.ExecuteNonQuery();
if (count > 0) MessageBox.Show("Password Reset Successfull!!");
  

对于UPDATE,INSERT和DELETE语句,返回值为   受命令影响的行数。当a上存在触发器时   正在插入或更新的表,返回值包括数字   受插入或更新操作影响的行数和数字   受触发器或触发器影响的行数。对于所有其他类型的   语句,返回值为-1。如果发生回滚,则返回   值也是-1。

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery(v=vs.110).aspx