c# - 更新命令被执行但没有改变任何东西

标签 c# sql

if (n != true)
{
    cmd = new OleDbCommand("select max(Angebotsnummer) from tbl_Angebote", con);
    neue_nr = Convert.ToInt32(cmd.ExecuteScalar()) + 1;
    cmd = new OleDbCommand("insert into tbl_Angebote values(@nr,@knr, @date, @bet)", con);
}
else
{
    neue_nr = Convert.ToInt32(txtAngebotsnummer.Text);
    cmd = new OleDbCommand("update tbl_Angebote set Kundennummer=@knr, Erstellungsdatum=@date, Betreff=@bet where Angebotsnummer=@nr", con);
}

cmd.Parameters.Add("@nr", OleDbType.Char, 10);
cmd.Parameters["@nr"].Value = neue_nr;

cmd.Parameters.Add("@knr", OleDbType.Char, 50);
cmd.Parameters["@knr"].Value = Convert.ToString(txtKnr.Text);

cmd.Parameters.Add("@date", OleDbType.Date, 50);
cmd.Parameters["@date"].Value = Convert.ToDateTime(txtDatum.Text);

cmd.Parameters.Add("@bet", OleDbType.Char, 255);
cmd.Parameters["@bet"].Value = Convert.ToString(txtBetreff.Text);

cmd.ExecuteNonQuery();
con.Close();

插入命令有效,更新命令无效...

如果我在 Access 中输入相同的命令,它就会起作用。

这是怎么回事?

谢谢

最佳答案

OleDbCommand 实际上并不采用命名参数。因此,参数在查询中出现的顺序需要与将参数添加到命令中的顺序相同。

因此,在您的情况下,对于 update 命令,最后一个参数 @bet 的值将用于 where 子句。尝试重新排序查询中的参数,使它们在两个查询中匹配,这样您就不必重复添加参数的代码。

关于c# - 更新命令被执行但没有改变任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28625285/

相关文章:

c# - 无法在私有(private)浏览器模式(隐身窗口)下运行 silverlight 应用程序

c# - 在 C# 中将对象上传到谷歌云存储桶

c# - 列表框项目WPF,不同项目的不同背景颜色

mysql - 如果没有结果,则将查询中的所有值初始化为 0,将 top 初始化为 NULL

sql - 我可以在子查询中使用多列吗?

c# - 启动 MvvmCross Uwp 应用程序时出现异常 : "System.AccessViolationException: Attempted to read or write protected memory"

c# - 处理一对多与不同相关实体的正确模式

SQL - 将人们存储为音乐家和艺术家的最佳表设计是什么?

sql - 锁定 SQL 表并等待释放锁 - Java

Mysql用group by更新最大值