更新命令已执行但不会更改任何内容

时间:2015-02-20 09:14:48

标签: 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中输入相同的命令,则可以正常工作。

它有什么问题?

由于

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

在SQL中运行更新并检查它是否正在更新?

update tbl_Angebote set Kundennummer='@knr', Erstellungsdatum='@date',
Betreff='@bet' where Angebotsnummer='value of @nr' 

如果工作正常并更新表格,请检查参数@nr。

的数据类型和长度