Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#将数据输入现有行时更新时出现语法错误_C#_Ms Access_Sql Update - Fatal编程技术网

使用C#将数据输入现有行时更新时出现语法错误

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

我的更新查询代码有问题,它在update语句中显示了错误语法错误。我想将in数据插入到已创建列的现有行中

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中的值在您的表中不存在。插入部分可以工作,但它只是在有问题的情况下进行更新。好吧,这就是我提供的语法,它是更新的正确语法。我的结论是这里一定有不同的问题。可能值得就这个问题问不同的问题。我会定义它但是,请检查您正在查看的数据库文件是否正确。