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/