sql和c# - 如果存在则更新,否则插入

时间:2015-05-17 16:12:26

标签: c# mysql

我在WinForms C#应用程序的MySqlConnection中使用MySqlCommand将数据插入到我的数据库中。

注意:假设所有名称都是唯一的,无论是什么!!

如果“name”中的列值已存在于数据库中,如何更新行?

如果它不存在,我想插入新行。

现在是我的代码:

command.CommandText = @"
    INSERT INTO users (name, age, job)
    VALUES (@name, @age, @job)
    ON DUPLICATE KEY UPDATE users SET age = @age, job = @job WHERE name = @name
";

我已经将值设置为@ name,@ and和@job,如下所示:

command.Parameters.AddWithValue("@name", Users.Name);

我想检查数据库中“name”列中是否已存在@name。因此,如果@name是“John”,则应检查“John”是否已存在。

如果存在,我只想更新该行的年龄和工作。

如果“John”不存在,请插入名称为+ age + job的完整行。

此代码给出了这样的错误:

  

发生了'MySql.Data.MySqlClient.MySqlException'类型的异常   在mscorlib.dll中但未在用户代码中处理

     

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'ON DUPLICATE KEY UPDATE用户SET年龄= 50,工作='第1行

1 个答案:

答案 0 :(得分:1)

您的查询更新部分错误,应该是:

 ON DUPLICATE KEY UPDATE age = @age, job = @job