dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Обновление БД

Останнє повідомлення 14-03-2008, 8:49 від Aleksandr_06. 1 відповіді.
Сортувати: Попереднє Наступне
  •  14-03-2008, 8:47 5646

    Обновление БД

    Я работаю с БД Oracle. У меня есть несколько таблиц в dataset, связанных между собой. В некоторых есть поля, которые нельзя редактировать(Например ID). Для обновления их я использую oleDataAdapter. Что нужно писать в CommandText в UpdateCommand? Или может быть по другому обновлять данные в БД?
    Заранее всем уделившим внимание спасибо.
  •  14-03-2008, 8:49 5647 у відповідь на 5646

    Re: Обновление БД

    Для простоты пусть у меня есть таблица всего из трёх полей :
    - ID (первичный ключ)
    - Name (строковое поле).
    - Date_From (служебное поле, дата ввода, это поле нельзя изменять)
    В своей программе я изменяю(добавляю,удаляю,редактирую) данные и вношу изменения в dataset.
    Но редактировать я могу только ID и Name.
    Добавляю в dataset так : dataSet1.MYTABLE.Rows.Add(NewRow);
    Удаляю из dataset так : dataSet1.MYTABLE.FindByID(Del_ID).Delete();
    Вношу изменения в dataset так : dataSet1.MYTABLE.FindByID(Up_ID)[1] = textBox1.Text;
    Теперь я хочу обновить саму базу данных. Для этого я использую oleDataAdapter.
    Для этого я в CommandText пишу :
    - для DeleteCommand: DELETE FROM "MYTABLE" WHERE (("ID" = ?) AND ("NAME" = ?) AND ("DATE_FROM" = ?))
    - для InsertCommand: INSERT INTO "MYTABLE" ("ID", "NAME","DATE_FROM") VALUES (?, ?, ?)
    - для SelectCommand: SELECT MYTABLE.* FROM MYTABLE
    - дляUpdateCommand: UPDATE "MYTABLE" SET "ID" = ?, "NAME" = ?, "DATE_FROM" = ? WHERE (("ID" = ?) AND ("NAME" = ?) AND ("DATE_FROM" = ?))
    У меня возникла проблема: Если оставить Update как здесь написано, то возникает
    ошибка "ORA-20201: Программная ошибка! Попытка обновления служебного поля!"
    Но по идее в update в SET не должно быть "ID" и "DATE_FROM"=? , но если убрать хотя бы что-нибудь, то возникает другая
    ошибка "ORA-01008: не все переменные привязаны".
    Вот меня и мучает вопрос: что я делаю не так?
    Подскажите пожалуйста ответ на этот вопрос или может вы знаете какой-нибудь другой способ
    обновления данных в БД.
    Заранее всем спасибо.
    P.S. Ещё подскажите как организовать каскадное удаление.
Переглядати як новосний Блог RSS в XML