Показать сообщение отдельно
Старый 13.03.2008, 22:56   #2 (permalink)
Aleksandr_06
Новичок
 
Регистрация: 12.09.2007
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Для простоты пусть у меня есть таблица всего из трёх полей :
- 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. Ещё подскажите как организовать каскадное удаление.
Aleksandr_06 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070