Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация с БД, занесение записей в таблицу БД 
:(
    Опции темы
Unlocker
Дата 2.12.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: 1
Всего: 2



Всем привет!
Вместе с проектом курсовой по БД (MS Sql Server 2k5 + ADO.NET 2.0) появилась проблема.
Есть довольно большая БД. Ниже приведен рабочий фрагмент.
<img src="http://pic.ipicture.ru/uploads/081202/EhP7u5R6Tr.jpg" border="0">
Books, Keyword - сущностные таблицы с первичными ключами, Books_Keywords -  операционная таблица, состоящая из 2х внешних ключей и не имеющая первичного.
Модель действий такова: пользователь выбирает запись из DataGridView, щелкает по кнопке, выплывает окно с привязками для этой записи (назначить книге ключевые слова). На новом окне расположен ListView, на котором галочками отмечены существующие привязки. Пользователь выбирает нужные ему, щелкает по кнопке. На этом фрагменте необходимо сохранить в БД изменившиеся привязки. Т.е. мы сперва удаляем старые, а потом полностью вставляем новые строки, чтобы избежать дублирования одинаковых записей.
Код кнопки, отвечающей за последние действия приведен ниже:
Код

        private void btnKeywordsSave_Click(object sender, EventArgs e)
        {
            // Получение массива старых привязок и их удаление.
            DataRow[] toDelete = dsBooks.Books.FindByBookID(InstanceID).GetChildRows(dsBooks.Relations["FK_Books_Keywords"]);
            DataTable dtB_K = dsBooks.Books_Keywords;
            foreach (DataRow row in toDelete)
            {
                dsBooks.Books_Keywords.Rows.Remove(row);
            }
            // Вставка новых привязок, исходя из нового состояния ListView.
            for (int i = 0; i < lsvKeywordSelect.Items.Count; i++)
            {
                if (lsvKeywordSelect.Items[i].Checked)
                {
                    UserListViewItem ulvi = (UserListViewItem)lsvKeywordSelect.Items[i];
                    dsBooks.Books_Keywords.Rows.Add(InstanceID, ulvi.ID);
                }
            }
            // Попытка сохранить действия в БД.
            dsBooks.AcceptChanges();
            this.books_KeywordsTableAdapter.Update(this.dsBooks.Books_Keywords);
            this.Close();
        }

Главный вопрос: как сохранить изменения в соотвествующую таблицу БД? чтобы по закрытии дочернего окошка ListBox на родительской форме, имеющий DataBinding по отношению к соответствующей таблице в БД отражались изменения?
Приму в свой адрес конструктиквную критику, уточняющие вопросы и мнения по поводу выше изложенной проблемы.

PS: поиск юзал, но необходимого по содержанию топика обнаружить не удалось.
PPS: если не удалось просмотреть схему БД по ссылке, то к посту она приложена.

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  ___________.jpg 58,67 Kb
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
Varenij
Дата 29.12.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 21.3.2007

Репутация: нет
Всего: нет



Мне кажется ты все немного усложняешь
можно для удаления выполнить что-то типа этого?
Код

delete from books_keywords where book_id = [ключ книги к которой удаляем привязки]

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1562 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.