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# 代码执行并且数据库表成功更新但仍然出现错误的主要内容,如果未能解决你的问题,请参考以下文章