2015-05-17 3 views
-2

Я использую MySqlCommand в MySqlConnection в приложении WinForms C# для вставки данных в мою базу данных.sql и C# - update if exists, else insert

ПРИМЕЧАНИЕ. Позволяет сказать, что ВСЕ имена уникальны, несмотря ни на что !!

Как я могу обновить строку, если значение столбца в «имени» уже существует в базе данных?

, и если он не существует, я хочу вставить новую строку.

Вот мой код прямо сейчас:

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, @age и @job так:

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

Я хочу, чтобы проверить, если @name уже существует в столбец «name» в базе данных. Поэтому, если @name - «Джон», он должен проверить, существует ли «Джон».

И если существует, я хочу только обновить возраст и работу в этой строке.

И если «Джон» не существует, вставьте полную строку с именем + возраст + задание.

Этот код дает мне ошибку вроде этого:

исключение типа «MySql.Data.MySqlClient.MySqlException» произошло в mscorlib.dll, но не был обработан в пользовательском коде

You ошибка в синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «ON DUPLICATE пользователи KEY UPDATE SET возраст = 50, работа =» в строке 1

+0

вы пробовали, что предлагает сообщение об ошибке: * проверьте руководство, которое соответствует версии сервера MySQL для [правильный синтаксис] (http://dev.mysql.com/doc /refman/5.6/en/insert-on-duplicate.html)*? – GSerg

+0

Да, и я не вижу, где я ошибся в своем коде. я проверил, что 1000 раз – user2849838

+0

Ну, вы должны были проверить еще раз. Вы используете имя таблицы и 'SET', если не хотите. – GSerg

ответ

1

У вас есть свет обновленной запрос неправильно , это должно быть просто:

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

Такое же сообщение об ошибке – user2849838

+1

Я забыл удалить 'where'. Я обновил – JRLambert

+0

, но как бы он знал, что проверить? Я хочу проверить, существует ли это имя. Что делать, если два человека имеют одинаковый возраст? не будет ли это обновлять их тогда? я не могу понять, как это будет видно, если только имя существует ... какого черта? – user2849838

Смежные вопросы