Обновление данных в БД Oracle

Тема в разделе "Остальные БД", создана пользователем Aleksandr06, 9 мар 2008.

  1. Aleksandr06

    Aleksandr06 Гость

    Я работаю с БД Oracle. У меня есть несколько таблиц в dataset, связанных между собой. В некоторых есть поля, которые нельзя редактировать(Например ID). Для обновления их я использую oleDataAdapter. Что нужно писать в CommandText в UpdateCommand? Или может быть по другому обновлять данные в БД?
    Заранее всем уделившим внимание спасибо.
     
  2. Aleksandr06

    Aleksandr06 Гость

    Для простоты пусть у меня есть таблица всего из трёх полей :
    - 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 не должно быть "DATE_FROM"=? , но если его убрать, то возникает другая
    ошибка "ORA-01008: не все переменные привязаны".
    Вот меня и мучает вопрос: что я делаю не так?
    Подскажите пожалуйста ответ на этот вопрос или может вы знаете какой-нибудь другой способ
    обновления данных в БД.
    Заранее всем спасибо.
    P.S. Ещё подскажите как организовать каскадное удаление.
     
  3. Aleksandr06

    Aleksandr06 Гость

    Я с этим справился!!!
    Но у меня ещё осталась проблема - каскадное удаление данных из нескольких таблиц!
    Подскажите пожалуйста лёгкий способ. Конечно можно искать все ссылки на удаляемую запись и сначало их удалять, но на эти записи могут ссылаться другие записи и т.д. И мне как-то неохота всё это отслеживать. Нет ли какого-нибудь лёгкого способа?
     
  4. ????

    ???? Гость

    настрой на сервере. через foreign ключи. on delete cascade или что тебе надо
     
  5. Aleksandr06

    Aleksandr06 Гость

    А где нужно писать "on delete cascade"?
     
  6. Aleksandr06

    Aleksandr06 Гость

    Спасибо вам за помощь.
    У меня вот ещё какой вопрос: Подскажите пожалуйста как в Visual Studio организовать отмену последнего действия в базе данных (например последнего удаления из БД)?
     
Загрузка...

Поделиться этой страницей