我正在使用以下查询来更新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();
答案 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]
请记住参数化您的查询。