【问题标题】:C# code executes and database table gets updated succesfully but still getting errorC# 代码执行并且数据库表成功更新但仍然出现错误
【发布时间】:2018-06-26 01:37:38
【问题描述】:

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

这是我的代码:

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!!");
    }
}

【问题讨论】:

  • 您遇到什么错误?在哪里?我猜它在咕哝什么类型的东西?
  • 密码重置失败!重新输入详细信息。从我的代码中的else语句。但数据库表得到更新
  • 我很惊讶它没有抱怨您的查询使用了保留字..
  • @BugFinder:Type 不是保留关键字:docs.microsoft.com/en-us/sql/t-sql/language-elements/…
  • 我发誓那是..哦,好吧..我去泡那份急需的茶

标签: c# sql sql-server-2008


【解决方案1】:

ExecuteNonQuery 不会返回任何数据

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

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

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

【讨论】:

  • 现在还早,我还没有喝茶(英国人我不喝咖啡),但即使这对我来说并不完美,但它对我来说是正确的......从更新命令运行数据集听起来很不稳定,尤其是然后在中间运行命令......所以这对我来说看起来更干净 - 我赞成抵消你得到的影响
  • 我不知道,如果您添加 DataTable 和 dt.Fill 不适用(出于您指定的原因),也许会有所帮助。
  • 另外,我想问一个关于这个论坛的问题,我是新来的,在此之后,问题,当我提出另一个问题时,它给了我一个错误,指出'我们不接受任何问题从这个帐户'。那是禁令吗?我的意思是为什么但是?
  • 看起来像质量差的临时惩罚。检查下一个问题的帮助区域并尝试改进(描述问题/不当行为,检查是否已经回答,尝试说清楚,这些都是很好的提示)。
  • @FrazzerK:我猜你已经删除了一些非常糟糕的问题(或答案),这些问题仍然计入你的帐户。防止这种情况的最好方法是花一些时间来提高问题的质量。阅读:Why are questions no longer being accepted from my account? 永远记住,这个网站不是一个论坛,而是一个网络,目的是帮助未来的访问者,不仅仅是你。因此,请提供包含所有必要信息和有意义的标题的问题
猜你喜欢
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多