更新 Access 表中的记录

Posted

技术标签:

【中文标题】更新 Access 表中的记录【英文标题】:updating a record in Access table 【发布时间】:2013-12-02 18:05:48 【问题描述】:

我正在使用以下查询,但出现语法错误?

我该怎么做?

 string str = string.Format("UPDATE [MIX] SET[Stock quantity],[Retail price],[Original price])Values(?,?,?,?) WHERE [Brand name]=@brandname");
 OleDbCommand comd = new OleDbCommand(str, conn);
 comd.Parameters.AddWithValue("@brandname", comboBox3.Text);
 comd.Parameters.AddWithValue("Stock quantity", comboBox1.Text);
 comd.Parameters.AddWithValue("Retail price", comboBox4.Text);
 comd.Parameters.AddWithValue("Original price", comboBox5.Text);
 comd.ExecuteNonQuery();

【问题讨论】:

错误是什么?此外,这不是更新语句的样子 使用 Access 的小技巧,您可以使用设计器构建您的查询,然后切换到 SQL 视图以查看生成的 SQL。这是一种很好的学习方式。 【参考方案1】:

你需要的是更像这样的东西:

string str = 
        "UPDATE [MIX] SET " + 
        "[Stock quantity] = ?, " +
        "[Retail price] = ?, " +
        "[Original price] = ? " +
        "WHERE [Brand name] = ?";
OleDbCommand comd = new OleDbCommand(str, conn);
comd.Parameters.AddWithValue("?", comboBox1.Text);  // [Stock quantity]
comd.Parameters.AddWithValue("?", comboBox4.Text);  // [Retail price]
comd.Parameters.AddWithValue("?", comboBox5.Text);  // [Original price]
comd.Parameters.AddWithValue("?", comboBox3.Text);  // [Brand name]
comd.ExecuteNonQuery();

请注意,参数的定义顺序与它们在 CommandText 中出现的顺序完全相同。

【讨论】:

【参考方案2】:

这不是更新语句的样子。你的陈述似乎是一个 INSERT 陈述。在此处查看 UPDATE 语句的不同之处:

http://msdn.microsoft.com/en-us/library/office/bb221186(v=office.12).aspx

典型说法:

UPDATE [TableName]
SET [FieldName] = @someValueParam
WHERE [SomeFieldName] = [someValue]

记得参数化你的查询。

【讨论】:

以上是关于更新 Access 表中的记录的主要内容,如果未能解决你的问题,请参考以下文章

删除记录而不删除另一个 Access 表中的相关记录

更新链接到 SharePoint 的 Access 表中的信息

使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值

将Access数据库表中的记录一一插入/复制到MySQL远程数据库

在不使用 VBA/Access 中的内联查询的情况下向表中添加记录

从 Excel 数据更新 Access 表中的数据和关系