Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Apollon89
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
1

Запись данных в БД

24.11.2011, 16:38. Просмотров 2529. Ответов 12
Метки нет (Все метки)

Всем привет подайте пожалуйста идею! Есть БД и есть Клиентская часть через которую вношу данные в бд.При добавлении чтобы высакивало сообщение с помощью MessageBox о том что например данная запись уже существует в таблице БД.Заранее спасибо!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string newGenreName = ComboBoxGenre_Name.Text;
            string newGenreDescr = TextBoxGenreDescription.Text;
    
            DataRow nr = ds.Tables["Genre"].NewRow();
            nr["Genre_Name"] = newGenreName;
            nr["Genre_Description"] = newGenreDescr;
 
            
            string sql1 = string.Format("Exec AddGenre"+"'"+newGenreName+"'"+","+"'"+newGenreDescr+"'");
            da.InsertCommand = new SqlCommand(sql1);
            da.InsertCommand.Connection = cn;
 
            ds.Tables["Genre"].Rows.Add(nr);
            try
            {
                da.Update(ds.Tables["Genre"]);
            }
            catch { }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2011, 16:38
Ответы с готовыми решениями:

Запись данных в базу данных mdb с использованием DataAdapter и DataSet
Попробовал сделать Update для таблицы контактов: private void...

Запись данных в базу данных SQL и выгрузка таблицы в форму
Нужно сделать 2 формы, одну с несколькими textBox'ами, чтобы при нажатии кнопки...

Как ускорить запись данных в базу данных?
Добрый день. Есть следующий тестовый код: class MyClass { public int a;...

Запись данных в бд
как на c# добавить данные в таблицу,не используя строковое представление...

Запись в базу данных
Имеется база данных пользователей. Таблица Human(ID,FIO, SEX, DateOfBirth,...

12
sau
2021 / 1634 / 271
Регистрация: 22.07.2011
Сообщений: 6,205
Завершенные тесты: 1
24.11.2011, 19:28 2
Ну в БД делаешь проверку, если уже есть генерируешь исключение
(можно в самой БД или в слое данных).
Поскольку обработка ошибок это сквозная логика то лучше реализовать ее через аспект. - в котором анализируешь принадлежность ошибки к какому либо из слоев (нужно свою классификацию реализовать) - слой данных, бизнес логики, представления, - и вызываешь соответственный для нее обработчик (может быть динамическим по классу ошибки и как то влиять на бизнес логику или поведение интерфейса), таким образом после обработки ты получишь дружественную для юзера месагу , которую и выведешь через MessageBox. В общем как то так.
Короче если грамотно делать то это целая инфоструктура, ну а можно тупо сразу вывести в MessageBox без заморочек )
0
Apollon89
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
24.11.2011, 20:32  [ТС] 3
Если бы я знал как сразу тупо вывести Message.Box я бы не просил помощи на форуме)) Я не знаю как само условие записать чтобы сравнивать переменную в которую записываю новую запись с полем в таблице!
0
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.11.2011, 09:55 4
Цитата Сообщение от Apollon89 Посмотреть сообщение
Если бы я знал как сразу тупо вывести Message.Box я бы не просил помощи на форуме)) Я не знаю как само условие записать чтобы сравнивать переменную в которую записываю новую запись с полем в таблице!
Не знаю как в других БД, но в MS SQL на таблицы можно "навесить" уникальные индексы, тогда наличие одинаковых строк будет пресекаться самой СУБД в момент вставки данных. И для отлова таких исключений измени код так
C#
1
2
3
4
5
try
            {
                da.Update(ds.Tables["Genre"]);
            }
            catch(Exception ex) { MessageBox.Show(ex.Message); }
0
Apollon89
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
25.11.2011, 10:52  [ТС] 5
Цитата Сообщение от nio Посмотреть сообщение
C#
1
2
3
4
5
try
            {
                da.Update(ds.Tables["Genre"]);
            }
            catch(Exception ex) { MessageBox.Show(ex.Message); }
Попробовал не работает(
0
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.11.2011, 12:15 6
Что значит не работает? Ошибки выдает? или не выдает? База какая используется?
0
Apollon89
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
25.11.2011, 12:22  [ТС] 7
Не выводит ничего! MsSql
0
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.11.2011, 15:25 8
Цитата Сообщение от Apollon89 Посмотреть сообщение
Не выводит ничего
Ты уникальные индексы на столбцы в БД подключил?
0
Apollon89
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
25.11.2011, 16:18  [ТС] 9
Цитата Сообщение от nio Посмотреть сообщение
Ты уникальные индексы на столбцы в БД подключил?
Нет у меня создана хранимая процедура для проверки существующей записи.Без создания уникальных индексов по другому нельзя никак выводит сообщение?

SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE proc AddGenre
@genre_name VARCHAR(20),
@gere_description VARCHAR(100)
AS
IF EXISTS
(
SELECT * FROM Genre
WHERE Genre_Name=@genre_name)
print('Данный жанр уже существует в таблице')
ELSE
INSERT INTO Genre(Genre_Name,Genre_Description)
VALUES(@genre_name,@gere_description)
0
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.11.2011, 16:58 10
Цитата Сообщение от Apollon89 Посмотреть сообщение
Нет
Я же сказал в посте 4, исключение генерит СУБД на основании уникальных индексов. Ты индексы не создал и хочешь, что бы исключения сами появлялись.
Тут только один выход: надеяться на магическое "по щучьему велению, по моему хотению, пускай записи в БД сами проверяются!".
0
Apollon89
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
25.11.2011, 17:21  [ТС] 11
Повесил уникальный индекс на поле Genre_Name всеравно не выводит ничего!
0
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.11.2011, 17:38 12
Цитата Сообщение от Apollon89 Посмотреть сообщение
Повесил уникальный индекс на поле Genre_Name всеравно не выводит ничего!
Т.е в таблицу можно разместить две записи, у которых значение в столбце Genre_Name будет совпадать? Что-то я не верю
1
Apollon89
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
25.11.2011, 17:58  [ТС] 13
Разобрался ! Видать не выводило сообщение так как в хранимой процедуре уже шла проверка на повторяющиеся записи,удалил хр.процедуру и записал добавление с помощью INSERT,теперь все работает. Большое спасибо!!!
0
25.11.2011, 17:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2011, 17:58

Запись данных в localDB
Привет интересует вопрос не могу понять как работать с localdb Есть база...

Запись данных на FTP
Имеется удаленный FTP-сервер без ssl-шифрования. Через любой FTP-клиент...

Запись данных в HTML
Здравствуйте, можно ли ввести данные в input не используя value? С изменением...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru