Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 49

Если строки с такой записью нет - создать, если есть - обновить

13.11.2019, 09:12. Показов 1100. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех местных жителей! В очередной раз у меня не получается правильно сформировать SQL запрос:

C#
1
2
3
4
5
6
7
8
9
10
SqlCommand command = new SqlCommand("INSERT INTO [Passport] (Pass_reg, Name, Stantion, STFirmNumber, STInvNumber, RSFirmNumber, RSInvNumber) VALUES (@Pass_reg, @Name, @Stantion, @STFirmNumber, @STInvNumber, @RSFirmNumber, @RSInvNumber) ON DUPLICATE KEY UPDATE (Pass_reg = '"+ Registration_ID + "', Name = '" + Name_ID + "', Stantion = '" + comboBoxSU.Text +"', STFirmNumber = '" + textBox1.Text + "', STInvNumber = '" + textBox2.Text + "', RSFirmNumber = '" + textBox3.Text + "', RSInvNumber = '" + textBox4.Text + "')", con);
 
 
            command.Parameters.AddWithValue("Pass_reg", SqlDbType.Int).Value = Registration_ID;
            command.Parameters.AddWithValue("Name", SqlDbType.VarChar).Value = Name_ID;
            command.Parameters.AddWithValue("Stantion", comboBoxSU.Text);
            command.Parameters.AddWithValue("STFirmNumber", textBox1.Text);
            command.Parameters.AddWithValue("STInvNumber", textBox2.Text);
            command.Parameters.AddWithValue("RSFirmNumber", textBox3.Text);
            command.Parameters.AddWithValue("RSInvNumber", textBox4.Text);
Необходимо чтобы выполнялось условие при котором если записи в базе нет - то создать, а если уже имеется, то обновить. Для столбца Name задана уникальность

Студия выдает ошибку "Неправильный синтаксис около ключевого слова ON"

Помогите пожалуйста

PS Может как то через if - else?

Добавлено через 19 минут
Даже наверное вот так:

C#
1
2
3
4
5
6
7
8
9
10
SqlCommand command = new SqlCommand("INSERT INTO [Passport] (Pass_reg, Name, Stantion, STFirmNumber, STInvNumber, RSFirmNumber, RSInvNumber) VALUES (@Pass_reg, @Name, @Stantion, @STFirmNumber, @STInvNumber, @RSFirmNumber, @RSInvNumber) ON DUPLICATE KEY UPDATE  Stantion = '" + comboBoxSU.Text +"', STFirmNumber = '" + textBox1.Text + "', STInvNumber = '" + textBox2.Text + "', RSFirmNumber = '" + textBox3.Text + "', RSInvNumber = '" + textBox4.Text + "'", con);
 
 
            command.Parameters.AddWithValue("Pass_reg", SqlDbType.Int).Value = Registration_ID;
            command.Parameters.AddWithValue("Name", SqlDbType.VarChar).Value = Name_ID;
            command.Parameters.AddWithValue("Stantion", comboBoxSU.Text);
            command.Parameters.AddWithValue("STFirmNumber", textBox1.Text);
            command.Parameters.AddWithValue("STInvNumber", textBox2.Text);
            command.Parameters.AddWithValue("RSFirmNumber", textBox3.Text);
            command.Parameters.AddWithValue("RSInvNumber", textBox4.Text);
Хотя все равно та же ошибка
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2019, 09:12
Ответы с готовыми решениями:

Обновить если запись есть; Создать если записи нет
Ребят подскажите как оптимизировать программу, ибо занимает очень много времени на обработку.Программа делает следующее - ищет на сайте...

Если есть запись обновить, иначе вставить в Access
Здравствуйте, надо мне сделать приложение на C# для работы с базой Access. Заступорил когда надо обновить данные, если артикул совпадает....

Если есть поле - обновить, если нет - создать
Всем привет! Возникла проблема: нужно создавать поле если нет с таким айди и обновлять его если в таблице такое айди есть. К примеру: у...

7
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
13.11.2019, 09:16
Цитата Сообщение от Kote_Gaeshi Посмотреть сообщение
у меня не получается правильно сформировать SQL запрос
Как минимум, неплохо бы оглашать СУБД.
1
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 49
13.11.2019, 09:31  [ТС]
Хм..

Добавлено через 1 минуту
В смысле оглашать?

Добавлено через 6 минут
Цитата Сообщение от Grossmeister Посмотреть сообщение
Как минимум, неплохо бы оглашать СУБД.
SQL Express, если вы про это
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
13.11.2019, 10:02
нету такого синтaксиса в t-sql
есть merge
1
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 49
13.11.2019, 10:25  [ТС]
Сделал через try - cache

Тему можно закрывать. Спасибо!
0
Эксперт .NET
 Аватар для Usaga
14130 / 9350 / 1350
Регистрация: 21.01.2016
Сообщений: 35,149
13.11.2019, 10:58
Цитата Сообщение от Kote_Gaeshi Посмотреть сообщение
Сделал через try - cache
С таким решением лучше тему вообще удалить, чтобы нормальные люди не подумали, что решение нормальное.
1
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 49
13.11.2019, 12:59  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
С таким решением лучше тему вообще удалить, чтобы нормальные люди не подумали, что решение нормальное.
Тогда скажите какое нормальное? Никто же не отвечает
0
Эксперт .NET
 Аватар для Usaga
14130 / 9350 / 1350
Регистрация: 21.01.2016
Сообщений: 35,149
13.11.2019, 13:24
Kote_Gaeshi, в смысле "никто не отвечает"? pincet вам ответил, пускай и не развёрнуто:

Цитата Сообщение от pincet Посмотреть сообщение
нету такого синтaксиса в t-sql
есть merge
Все современные СУБД поддерживают команду MERGE INTO, которой передаются две таблицы: целевая и исходная (источник). Команда построчно читает исходные данные и ищет их в целевой. В зависимости от результата поиска она может: добавить данные, обновить или удалить. Всё это настраиваемо.

Открывайте гугл и вбивайте "SQL MERGE".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2019, 13:24
Помогаю со студенческими работами здесь

Тригер, проверяющ. есть ли такой ID и если есть обновляющий его, если нет - добавляющий
Сабж. В MSSQL нуб. Есть ситуация. Добавляю товар из каталога поставщика в каталог магазина. Может быть такое, что мы заказываем...

Запрос: если записи нет - добавить, если есть - обновить
Здравствуйте. Помогите составить запрос, который будет добавлять запись в таблицу, если ее там нет и обновлять несколько полей, если есть.

Одним запросом, если есть таблица то удалить, если нет то создать
Доброго времени суток, а нет ли возможности одним запросом проверить, если есть таблица то удалить, а если нет то создать?

Создание системной переменной если её нет и удаление если есть (setenv)
Нужен своеобразный переключатель определенной системной переменной с помощью утилиты setenv. Суть его работы: Если переменная VAR...

Если в диапазоне есть время больше указанного,то 500,если нет - 0
Вопрос связан с расчетом зарплаты. Есть отдельно табель учета времени прихода/ухода, на сколько опоздал и тд. Нужно, чтобы если человек...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru