C# 代码执行并且数据库表成功更新但仍然出现错误

Posted

技术标签:

【中文标题】C# 代码执行并且数据库表成功更新但仍然出现错误【英文标题】:C# code executes and database table gets updated succesfully but still getting error 【发布时间】: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/… 我发誓那是..哦,好吧..我去泡那份急需的茶 【参考方案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? 永远记住,这个网站不是一个论坛,而是一个网络,目的是帮助未来的访问者,不仅仅是你。因此,请提供包含所有必要信息和有意义的标题的问题

以上是关于C# 代码执行并且数据库表成功更新但仍然出现错误的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 编译成功但仍然给出语义错误

Perl脚本记录外部可执行文件输出和错误,但仍然运行

c# 使用update更新成功但数据库没有变化

PHP / SQL:成功更新数据行但出现PHP致命错误

phpmyadmin 出现奇怪的错误,安装成功但仍然无法正常工作

更新Google服务插件并且无法安装应用程序成功完成gradle后