Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
9:03:2008, 10:35
|
|
Новенький ![]() Группа: Программист Сообщений: 7 Регистрация: 9:03:2008 Пользователь №: 15 736 Репутация: 0
|
Я работаю с БД Oracle. У меня есть несколько таблиц в dataset, связанных между собой. В некоторых есть поля, которые нельзя редактировать(Например ID). Для обновления их я использую oleDataAdapter. Что нужно писать в CommandText в UpdateCommand? Или может быть по другому обновлять данные в БД?
Заранее всем уделившим внимание спасибо. |
|
Сообщение
#1
|
|
![]() |
|
|
13:03:2008, 18:47
|
|
Новенький ![]() Группа: Программист Сообщений: 7 Регистрация: 9:03:2008 Пользователь №: 15 736 Репутация: 0
|
Для простоты пусть у меня есть таблица всего из трёх полей :
- 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. Ещё подскажите как организовать каскадное удаление. |
|
Сообщение
#2
|
|
|
|
18:03:2008, 12:12
|
|
Новенький ![]() Группа: Программист Сообщений: 7 Регистрация: 9:03:2008 Пользователь №: 15 736 Репутация: 0
|
Я с этим справился!!!
Но у меня ещё осталась проблема - каскадное удаление данных из нескольких таблиц! Подскажите пожалуйста лёгкий способ. Конечно можно искать все ссылки на удаляемую запись и сначало их удалять, но на эти записи могут ссылаться другие записи и т.д. И мне как-то неохота всё это отслеживать. Нет ли какого-нибудь лёгкого способа? |
|
Сообщение
#3
|
|
|
|
18:03:2008, 19:39
|
|
Почетный секретчик ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 166 Регистрация: 30:09:2003 Из: Брест Пользователь №: 58 Специализация: Пиво Репутация: 2
|
|
|
Сообщение
#4
|
|
|
|
19:03:2008, 11:34
|
|
Новенький ![]() Группа: Программист Сообщений: 7 Регистрация: 9:03:2008 Пользователь №: 15 736 Репутация: 0
|
|
|
Сообщение
#5
|
|
|
|
19:03:2008, 12:01
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 740 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 27
|
Aleksandr06
Для существующих relations. |
|
Сообщение
#6
|
|
|
|
22:03:2008, 19:47
|
|
Новенький ![]() Группа: Программист Сообщений: 7 Регистрация: 9:03:2008 Пользователь №: 15 736 Репутация: 0
|
Спасибо вам за помощь.
У меня вот ещё какой вопрос: Подскажите пожалуйста как в Visual Studio организовать отмену последнего действия в базе данных (например последнего удаления из БД)? |
|
Сообщение
#7
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 04:40 |