我一直收到错误,我的update语句中存在语法错误。关于如何解决这个问题的任何想法?我在另一个程序中使用了一个非常相似的代码,它工作正常,所以我很难过。我试过了''并且没有在SQL语句中没有结果的差异。
using (OleDbConnection con = new OleDbConnection(constring))
{
try
{
string cmdstring = "UPDATE EMPLOYEE SET Location = '@location', Position = '@position' WHERE TellerNum = '@teller'";
using (OleDbCommand cmd = new OleDbCommand(cmdstring, con))
{
cmd.Parameters.AddWithValue("@location", comboBox18.Text);
cmd.Parameters.AddWithValue("@position", comboBox19.Text);
cmd.Parameters.AddWithValue("@teller", comboBox17.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
string inststring = "INSERT INTO EMPLOYEE (Comments) VALUES (@comments) WHERE TellerNum = @teller";
using (OleDbCommand insert = new OleDbCommand(inststring, con))
{
insert.Parameters.AddWithValue("@comments", textBox8.Text);
insert.Parameters.AddWithValue("@teller", comboBox17.Text);
con.Open();
insert.ExecuteNonQuery();
con.Close();
}
MessageBox.Show("Submitted Successfully");
}
catch (Exception ex)
{
MessageBox.Show("Failed due to " + ex.Message);
}
}
答案 0 :(得分:0)
正如在注释中所解释的那样,语法错误是由INSERT INTO语句中存在WHERE子句引起的,但是如果要使用注释,位置和位置更新现有员工记录,则只需使用一个命令即可。另请注意,您不要将参数占位符放在单引号之间。如果这样做,则会在隐藏参数值
的文字值中转换占位符using (OleDbConnection con = new OleDbConnection(constring))
{
try
{
string cmdstring = @"UPDATE EMPLOYEE
SET Location = @location,
Comments = @Comments,
[Position] = @position
WHERE TellerNum = @teller";
using (OleDbCommand cmd = new OleDbCommand(cmdstring, con))
{
cmd.Parameters.AddWithValue("@location", comboBox18.Text);
cmd.Parameters.AddWithValue("@comments", textBox8.Text);
cmd.Parameters.AddWithValue("@position", comboBox19.Text);
cmd.Parameters.AddWithValue("@teller", comboBox17.Text);
con.Open();
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show("Failed due to " + ex.Message);
}
}
如果你想在之前的评论中添加新评论,那么你的查询应该是(总是一个更新查询),就像这样
string cmdstring = @"UPDATE EMPLOYEE
SET Location = @location,
Comments = Comments + @Comments,
[Position] = @position
WHERE TellerNum = @teller";
使用保留关键字也会产生问题。众所周知,使用保留关键字会导致语法错误。在您的情况下,POSITION是reserved keyword in MS-Access,因此,您需要将其括在方形行李箱中。 (但最好将该名称更改为不同的名称以避免将来重复相同的错误)