【发布时间】:2017-11-01 08:55:13
【问题描述】:
当我在调试器中运行我的代码并将鼠标悬停在参数上时,它们确实具有正确的值。它只是不会更新我的数据库,但是当我复制查询并将其放入数据库时,它可以正常工作。
参数值为:
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();
}
}
【问题讨论】:
-
参数值是什么?
-
id = 7, omschrijving = douche muntjes, prijs = 0,5, catagorie = faciliteiten
-
定义您的命令类型 query.CommandType = CommandType.Text 并尝试在单行中编写您的查询
query.CommandText = @"UPDATE prijslijst SET omschrijving = @omschrijving, prijs = @prijs, catagorie = @catagorie WHERE id = @id"; -
@JelleTaal 你说的异常是什么?
-
OleDb 提供程序可能需要按照它们在查询中出现的相同顺序添加参数,这与 MSSQL 提供程序不同,它按名称而不是位置分配。