Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Базы данных
Перезагрузить страницу Обновление данных в БД
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Aleksandr_06 Aleksandr_06 вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.09.2007
По умолчанию 09.03.2008, 14:17

Я работаю с БД Oracle. У меня есть несколько таблиц в dataset, связанных между собой. В некоторых есть поля, которые нельзя редактировать(Например ID). Для обновления их я использую oleDataAdapter. Что нужно писать в CommandText в UpdateCommand? Или может быть по другому обновлять данные в БД?
Заранее всем уделившим внимание спасибо.
Ответить с цитированием
  (#2 (permalink)) Старый
Aleksandr_06 Aleksandr_06 вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.09.2007
По умолчанию 13.03.2008, 22:56

Для простоты пусть у меня есть таблица всего из трёх полей :
- 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 (permalink)) Старый
andre andre вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.05.2008
Адрес: Оренбург
По умолчанию 20.05.2008, 14:27

В книге С.В.Глушакова "DELPHI 2007" (стр. 474) это решение описано так:

...Чтобы не изменять значение какого-либо поля, ему необходимо присвоить значение NIL.
В этом случае прежнее значение поля будет сохранено без изменения.
Редактирование записи с помощью метода SetFields может выглядеть примернотак:

ADOTable1.Edit;
ADOTable1SetFields(['0284','Порошок стиральный',NIL,500]);
ADOTable1.Post;

При выполнении приведенного выше кода первому полю текущей записи присваивается значение '0284' ,
второму полю - 'Порошок стиральный',
третье поле НЕ ИЗМЕНЯЕТСЯ , а четвертое получает значение 500.
...
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое обновление данных sanya89 Java 1 30.01.2011 02:36
Про обновление Sashok14 Любые вопросы от новичков 4 19.01.2011 20:17
Обновление Базы Данных imported_Ivo .NET 1 26.04.2008 14:56
Автоматическое обновление данных на клиентах Alex S. C++ Builder 4 29.03.2007 20:29
Обновление базы данных в приложении vital_krsk C++ Builder 10 27.05.2006 10:54
Обновление данных в DBGrid на клиентских машинах Артём М. MSSQL Server 1 01.05.2006 12:07
MS SQL Server и ADO обновление данных kindzer Delphi 0 29.06.2005 17:52
Обновление данных CView vilru Visual C++ 6 24.02.2005 19:26
Обновление jdk 1.3 до jdk 1.5 _Cyclope Java 2 13.01.2005 20:42
Обновление данных в базе данных katalenka Delphi 4 13.05.2004 12:58
Builder & Internet обновление базы данных со страницы oltur C++ Builder 9 27.02.2004 15:35
Сетевая база данных, обновление запросов Anonymous C++ Builder 2 08.08.2003 19:00



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов