Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Обновление данных в БД Oracle, Обновление данных в БД Oracle
Aleksandr06
Вставить ник
сообщение 9:03:2008, 10:35
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 7
Регистрация: 9:03:2008
Пользователь №: 15 736



Репутация: - 0 +


Я работаю с БД Oracle. У меня есть несколько таблиц в dataset, связанных между собой. В некоторых есть поля, которые нельзя редактировать(Например ID). Для обновления их я использую oleDataAdapter. Что нужно писать в CommandText в UpdateCommand? Или может быть по другому обновлять данные в БД?
Заранее всем уделившим внимание спасибо.
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 6)
Aleksandr06
Вставить ник
сообщение 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
Aleksandr06
Вставить ник
сообщение 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 +


Цитата(Aleksandr06 @ 18:03:2008 - 15:12) *
каскадное удаление данных из нескольких таблиц!

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

Подняться вверх 
 
Сообщение #4
Aleksandr06
Вставить ник
сообщение 19:03:2008, 11:34
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 7
Регистрация: 9:03:2008
Пользователь №: 15 736



Репутация: - 0 +


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

А где нужно писать "on delete cascade"?
Подняться вверх 
 
Сообщение #5
sax_ol
Вставить ник
сообщение 19:03:2008, 12:01
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Aleksandr06
Для существующих relations.
Подняться вверх 
 
Сообщение #6
Aleksandr06
Вставить ник
сообщение 22:03:2008, 19:47
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 7
Регистрация: 9:03:2008
Пользователь №: 15 736



Репутация: - 0 +


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


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 04:40
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net