更新Access表中的记录

时间:2013-12-02 18:05:48

标签: c# ms-access oledb

我正在使用以下查询来更新Access表中的记录,但是我收到了语法错误?

我该怎么做?

 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();

2 个答案:

答案 0 :(得分:3)

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

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中的显示顺序相同。

答案 1 :(得分:2)

这不是更新语句的样子。您的语句看起来像INSERT语句。看一下UPDATE语句的不同之处:

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

典型陈述:

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

请记住参数化您的查询。