当我在调试器中运行我的代码并将鼠标悬停在参数上时,它们确实具有正确的值。它只是不更新我的数据库,但当我复制查询并将其放入数据库时,它没有问题。
参数值为:
id = 7
omschrijving = douche muntjes
prijs = 0,5
catagorie = faciliteiten
我使用插入查询检查了连接,并确实将记录添加到我的数据库中。并且在数据库中有一个值为7的id。
当我通过我的C#代码运行插入查询或删除查询时,它确实有效,它只是不起作用的更新语句。如果有人看到这个问题,请帮助我。
public static void wijzigprijs(int id, string omschrijving, decimal prijs, string catagorie)
{
try
{
try
{
OleDbConnection verbinding = new OleDbConnection(
@"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=..\..\..\La_Rustique.accdb;
Persist Security Info=False;");
verbinding.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
OleDbCommand query = new OleDbCommand();
query.CommandText = @"UPDATE prijslijst
SET omschrijving = @omschrijving,
prijs = @prijs,
catagorie = @catagorie
WHERE id = @id";
query.Parameters.Add(new OleDbParameter("@id", OleDbType.Integer));
query.Parameters["@id"].Value = id;
query.Parameters.Add(new OleDbParameter("@omschrijving", OleDbType.VarChar));
query.Parameters["@omschrijving"].Value = omschrijving;
query.Parameters.Add(new OleDbParameter("@prijs", OleDbType.Decimal));
query.Parameters["@prijs"].Value = prijs;
query.Parameters.Add(new OleDbParameter("@catagorie", OleDbType.VarChar));
query.Parameters["@catagorie"].Value = catagorie;
query.Connection = verbinding;
query.ExecuteNonQuery();
MessageBox.Show("succesvol gewijzigd");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
verbinding.Close();
}
}
答案 0 :(得分:1)
编辑更新
看看这个主题。在这里,他解释了如何在OleDbCommand
中使用变量使用SQLCommand参数时,通常会这样做: 我知道这并没有完全回答你的问题,但是当我使用SQLCommand时,每当我想更新或插入变量时我都会使用这段代码:
<hr />
所以你应该能够做同样的事情。希望这会对你有所帮助。
答案 1 :(得分:1)
我从未见过用上述语法编写的OleDB查询。 换句话说:OleDB根本不使用命名参数,它只使用位置。
尝试像这样更改SQL语句:
{{1}}
然后在代码中按上面的顺序添加参数 低于那个。