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

Цикличное добавление данных в таблицу Sql

20.04.2022, 22:08. Показов 1329. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, возникла проблема по которой совсем не нашла инфы в интернете.
У меня есть класс Ticket в котором хранится к примеру 2 билета. И я в цикле форич хочу эти билеты внести в таблицу бд. Однако заносит мне только первый билет, при добавлении второго вылетает исключение : Имя переменной '@emaill' уже объявлено. Имена переменных должны быть уникальными в пакете запросов или хранимой процедуре.
Как сделать так чтобы мне занесло в таблицу оба билета ?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
foreach (Ticket ticket in m_tickets)
                        {
                            try
                            {
                                sqlcmd.CommandText = "INSERT into dbo.tickets (email, code, departure_city, arrival_city, departure_time, arrival_time, seat_type, price) Values (@emaill,@code,@dep_city,@arr_city,@dep_time,@arr_time,@seat,@price)";
                                sqlcmd.Parameters.AddWithValue("@emaill", mainWindow.m_user.m_email.Trim());
                                sqlcmd.Parameters.AddWithValue("@code", "hhhh");
                                sqlcmd.Parameters.AddWithValue("@dep_city", ticket.m_departureCity.Trim());
                                sqlcmd.Parameters.AddWithValue("@arr_city", ticket.m_arrivalCity.Trim());
                                sqlcmd.Parameters.AddWithValue("@dep_time", ticket.m_departureTime);
                                sqlcmd.Parameters.AddWithValue("@arr_time", ticket.m_arrivalTime);
                                if (ticket.m_isBusiness)
                                {
                                    sqlcmd.Parameters.AddWithValue("@seat", "Бизнес класс");
                                }
                                else
                                {
                                    sqlcmd.Parameters.AddWithValue("@seat", "Эконом класс");
                                }
                                sqlcmd.Parameters.AddWithValue("@price", ticket.m_price);
                                sqlConnection.Open();
                                sqlcmd.ExecuteNonQuery();
                                sqlConnection.Close();
                            }
                            catch(Exception ee)
                            {
                                MessageBox.Show(ee.Message.ToString());
                            }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2022, 22:08
Ответы с готовыми решениями:

Добавление данных через форму в таблицу базы данных MS SQL
Здравствуйте! Я делаю форму для добавления записи в таблицу базы данных, созданную в MS SQL 2008. В таблице три поля...

Добавление данных в таблицу sql через форму
Здравствуйте! Подскажите пожалуйста как записать данные в таблицу sql через форму c#. Т.e. есть три элемента textBox, в которые будут...

Добавление данных в таблицу sql
Здравствуйте, подскажите пожалуйста в чем я ошибся <body> <?php $mysql_username="root"; $mysql_password=""; ...

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18304 / 14228 / 5368
Регистрация: 17.03.2014
Сообщений: 28,901
Записей в блоге: 1
20.04.2022, 23:43
Лучший ответ Сообщение было отмечено Usaga как решение

Решение

Yulya Zubareva, исключение возникает потому что вы добавляете параметры к одной и той же команде. Нужно создавать каждый раз новую команду или создать команду и параметры один раз. После чего присваивать значения созданным параметрам.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
sqlcmd.CommandText = "INSERT into dbo.tickets (email, code, departure_city, arrival_city, departure_time, arrival_time, seat_type, price) Values (@emaill,@code,@dep_city,@arr_city,@dep_time,@arr_time,@seat,@price)";
sqlcmd.Parameters.AddWithValue("@emaill", mainWindow.m_user.m_email.Trim());
sqlcmd.Parameters.AddWithValue("@code", "hhhh");
sqlcmd.Parameters.AddWithValue("@dep_city", "");
sqlcmd.Parameters.AddWithValue("@arr_city", "");
sqlcmd.Parameters.AddWithValue("@dep_time", DateTime.MinValue);
sqlcmd.Parameters.AddWithValue("@arr_time", DateTime.MinValue);
sqlcmd.Parameters.AddWithValue("@seat", "");
sqlcmd.Parameters.AddWithValue("@price", 0.0m);
 
foreach (Ticket ticket in m_tickets)
{
    try
    {
        sqlcmd.Parameters["@dep_city"].Value = ticket.m_departureCity.Trim();
        sqlcmd.Parameters["@arr_city"].Value = ticket.m_arrivalCity.Trim();
        sqlcmd.Parameters["@dep_time"].Value = ticket.m_departureTime;
        sqlcmd.Parameters["@arr_time"].Value = ticket.m_arrivalTime;
        sqlcmd.Parameters["@seat"].Value = ticket.m_isBusiness ? "Бизнес класс" : "Эконом класс";
        sqlcmd.Parameters["@price"].Value = ticket.m_price;
        
        sqlConnection.Open();
        sqlcmd.ExecuteNonQuery();
        sqlConnection.Close();
    }
    catch (Exception ee)
    {
        MessageBox.Show(ee.Message.ToString());
    }
}
1
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,443
21.04.2022, 02:51
В дополнение к ответу выше добавлю, что весь цикл должен быть обёрнут в транзакцию. Чтобы не было ситуации, когда часть данных в базу попала, а часть нет из-за какой-то ошибки.
1
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
21.04.2022, 11:18
давненько не брал в руки шашки)
очень даже может быть что динамически подготовленый скрипт insert .... (select union all select...)
отработает в одной транзакции
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2022, 11:18
Помогаю со студенческими работами здесь

Добавление данных в таблицу SQL
Всем привет вот была сделана программа для работы с бд sql , но проблема в том что не могу внести данные в сам сервер. Пробовал через...

Добавление данных в таблицу используя sql запрос
Нужно добавить 3 записи в таблицу одну спокойно могу добавить, а вот как добавлять несколько записей не знаю Попробовал вот так но выдаёт...

SQL запрос на добавление данных из VBA Excel в таблицу Access
Добрый день, форумчане! Столкнулся с ошибкой запроса на добавление при попытке передать данные из формы в Excel в таблицы Access. Ошибка -...

Цикличное добавление обработчиков события
Циклом создаю большое количество кнопок. Вопрос: Как на каждую кнопку добавить циклом по 1 функции отвечающие за нажатие на эти созданные...

SQL. Добавление в таблицу записи
Подскажите пожалуйста. У меня есть программа что-то типа "интернет магазина" мне нужно при покупки товара что б название и цена товара...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru