使用C#将数据输入现有行时更新时出现语法错误
我的更新查询代码有问题,它在update语句中显示了错误语法错误。我想将in数据插入到已创建列的现有行中使用C#将数据输入现有行时更新时出现语法错误,c#,ms-access,sql-update,C#,Ms Access,Sql Update,我的更新查询代码有问题,它在update语句中显示了错误语法错误。我想将in数据插入到已创建列的现有行中 private void save_care_Click(object sender, EventArgs e) { if (textBox2.Text=="") { //Checking if workorder exist in database connection.Open();
private void save_care_Click(object sender, EventArgs e)
{
if (textBox2.Text=="")
{
//Checking if workorder exist in database
connection.Open();
OleDbCommand checkrecord = new OleDbCommand("SELECT COUNT(*) FROM [c# barcode] WHERE ([Workorder] = @workorder)", connection);
checkrecord.Parameters.AddWithValue("@workorder", textBox2.Text);
int recordexist = (int)checkrecord.ExecuteScalar();
if (recordexist > 0)
{
//add data if it exist
string cmdText = "UPDATE [c# barcode] SET ([Close from care],[Name care]) VALUES (@Close, @name) WHERE ([Workorder] = @workorder)";
using (OleDbCommand cmd = new OleDbCommand(cmdText, connection))
{
cmd.Parameters.AddWithValue("@workorder", textBox2.Text);
cmd.Parameters.AddWithValue("@Close", DateTime.Now.ToString("d/M/yyyy"));
cmd.Parameters.AddWithValue("@name", label4.Text);
cmd.ExecuteNonQuery();
textBox2.Clear();
connection.Close();
}
connection.Close();
}
else
{
//inserting workorder if it does not exist
string cmdText = "INSERT INTO [c# barcode] ([Workorder], [Close from care], [Name care]) VALUES (@workorder, @Close, @name)";
using (OleDbCommand cmd = new OleDbCommand(cmdText, connection))
{
cmd.Parameters.AddWithValue("@workorder", textBox2.Text);
cmd.Parameters.AddWithValue("@Close", DateTime.Now.ToString("d/M/yyyy"));
cmd.Parameters.AddWithValue("@name", label4.Text);
if (cmd.ExecuteNonQuery() > 0)
{
textBox2.Clear();
MessageBox.Show("Insert successful, workorder has not been handed over, please check");
}
else
{
textBox2.Clear();
MessageBox.Show("Please rescan");
connection.Close();
}
connection.Close();
}
}
}
else
MessageBox.Show("No data, Please scan workorder");
}
错误位于cmd.ExecuteNonQuery()代码>行
例如,workorder下图片中的表有一个test4。更新将在test4行的[Close from care]和[name care]列中插入数据
我相信您正在使用INSERT语法进行更新。你应该使用
Microsoft的示例如下所示:
UPDATE Orders
SET OrderAmount = OrderAmount * 1.1,
Freight = Freight * 1.03
WHERE ShipCountry = 'UK';
因此,如果我们更新您的以匹配,它应该如下所示:
UPDATE [c# barcode]
SET [Close from care] = @Close,
[Name care] = @name
WHERE [Workorder] = @workorder
显然,换行符并不重要,只是为了便于阅读。您的表实际上被称为c\35; barcode
?是的,它被称为c\barcode我在单击按钮时尝试了代码,但它没有做任何事情。也许您正在更新另一个MS Access数据库(例如,您查看的是项目文件夹中的文件,而不是bin/Debug或bin/Release文件夹)。也许@workorder中的值在您的表中不存在。插入部分可以工作,但它只是在有问题的情况下进行更新。好吧,这就是我提供的语法,它是更新的正确语法。我的结论是这里一定有不同的问题。可能值得就这个问题问不同的问题。我会定义它但是,请检查您正在查看的数据库文件是否正确。