Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обновление данных в БД Oracle
Форум программистов > Базы данных и администрирование > Остальные БД
Aleksandr06
Я работаю с БД Oracle. У меня есть несколько таблиц в dataset, связанных между собой. В некоторых есть поля, которые нельзя редактировать(Например ID). Для обновления их я использую oleDataAdapter. Что нужно писать в CommandText в UpdateCommand? Или может быть по другому обновлять данные в БД?
Заранее всем уделившим внимание спасибо.
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. Ещё подскажите как организовать каскадное удаление.
Aleksandr06
Я с этим справился!!!
Но у меня ещё осталась проблема - каскадное удаление данных из нескольких таблиц!
Подскажите пожалуйста лёгкий способ. Конечно можно искать все ссылки на удаляемую запись и сначало их удалять, но на эти записи могут ссылаться другие записи и т.д. И мне как-то неохота всё это отслеживать. Нет ли какого-нибудь лёгкого способа?
????
Цитата(Aleksandr06 @ 18:03:2008 - 15:12) *
каскадное удаление данных из нескольких таблиц!

настрой на сервере. через foreign ключи. on delete cascade или что тебе надо
Aleksandr06
Цитата(???? @ 18:03:2008 - 23:39) *
настрой на сервере. через foreign ключи. on delete cascade или что тебе надо

А где нужно писать "on delete cascade"?
sax_ol
Aleksandr06
Для существующих relations.
Aleksandr06
Спасибо вам за помощь.
У меня вот ещё какой вопрос: Подскажите пожалуйста как в Visual Studio организовать отмену последнего действия в базе данных (например последнего удаления из БД)?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.