![]() |
|
Модераторы: gambit |
![]()
|
|
| Dimass |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 2.4.2007 Где: Волгоград Репутация: нет Всего: нет |
Похожие темы не раз читал, Прочитал книгу по ADO.Net. И никак не могу понять, может кто пояснит.
Ситуация: 1)Есть SQL Server 2000 с БД в которой одна таблица и в ней два столбца Один Автоинкриментный ключ (ID) второй текстовый столбец напрмер (Name). 2)Есть простое приложение из одной формы и на ней DataGridView Вопрос: 2) Каким образом оптимально построить работу данного приложения, что бы можно было вносить записи в БД и быть уверенным в том, что другой пользователь не попытается присвоить значение первичного ключа для новой записи одинаковое со мной. т.е оно генерируется самой БД уже при всавке новых записей в БД Тут должен бы быть код, но его нет т.к. я не могу понять как его написать. |
|||
|
||||
| thomas |
|
||||||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Dimass,
Приветствую.
Пишешь это, как бы вопрос. И тут же сам отвечаешь
Потому как,
А по поводу этого
Применить принцип ООП и, как древние говорили, "разделяй и влавствуй". Т.е. создай три слоя: дата слой, бизнес логика слой и слой презентации. Первый это все что касается соединения и работы с БД.(класс доступа к БД) Второй это все что касается обработки данных.(класс(ы) манипуляций с данными) Третий это все что касается представления данных пользователю. (код самой формы) К примеру первый класс можно реализовать примерно так http://forum.vingrad.ru/forum/topic-164608.html -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||||||
|
|||||||||
| Dimass |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 2.4.2007 Где: Волгоград Репутация: нет Всего: нет |
Спасибо за ссылку!
Я хотел бы уточнить задачу. Все просто, есть DataSet c DataTable заполненной данными. Мы создаем новую запись и присоединяем к таблице. После этого в моей голове пробел. Как переслать данные о вставленных записях.
Я предпологаю что нужно создать команду Insert но как быть с тем, что кто то тоже вставит новую строку со значением первичного ключа которое использовал я. Будет исключение! Как сделать так, что бы реальный первичный ключ присваивался базой (в моем случае его создает программа) а после обновления его реальное значение возвращалось при повторном выполнении метода Fill() моего DataSet |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Dimass,
То что ты делаешь в приведенном куске кода в корне не правильно. Ты создаешь таблицу в ДатаСет программно с "нуля". А надо бы её вызвать из Базы данных с твоего сервера. Т.е. создать соединение (private SqlConnection dbCon;), создать датаАдаптер (private SqlDataAdapter dbDa;), создать команду ( private SqlCommand dbCmd;) задать им соответствующие свойства, создать датаСет (private DataSet ds; ds = new DataSet();) Соединеться с сервером и БД, написать sql-команду(sql = "SELECT * FROM tblMyTable;"; dbCmd.CommandText = sql;) на выборку данных и выполнив метод Fill датаАдаптера (dbDa.Fill(ds, tabelName);) заполнить таблицу в ДатаСет данными из БД. А потом когда "юзверь" внесет в эту табличку новые данные выполнить метод Update для датаАдаптера (dbDa.Update(ds.Tables[tabelName])) И Внесенные им данные будут добавлены в таблицу БазыДанных, где будут сгенерированны ID. А что бы узнать это ID, да
Это сообщение отредактировал(а) thomas - 1.11.2007, 18:16 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| Dimass |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 2.4.2007 Где: Волгоград Репутация: нет Всего: нет |
thomas глубокий Руспект вам за подсказку, кажется разобрался. Как раз то, что я хотел узнать!
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |