Компонент TDatabase - часть 3
Рис. 8 Приложение для ввода данных в таблицу ORACLE
Значения свойств компонентов созданного приложения приведены в таблице 1. Особо отметим, что свойство CachedUpdates компонента Table1должно иметь значение true.
Таблица 1.
Компонент | Свойство | Значение |
Database1 | DatabaseName | my_database |
Params |
SERVER NAME=ORA USER NAME=USER1 NET PROTOCOL=TNS OPEN MODE=READ/WRITE SCHEMA CACHE SIZE=8 LANGDRIVER=ancyrr SQLPASSTHRU MODE=SHARED AUTOCOMMIT SCHEMA CACHE TIME=-1 MAX ROWS=-1 BATCH COUNT=200 ENABLE SCHEMA CACHE=FALSE SCHEMA CACHE DIR= ENABLE BCD=FALSE ENABLE INTEGERS=FALSE LIST SYNONYMS=NONE ROWSET SIZE=20 BLOBS TO CACHE=64 BLOB SIZE=32 PASSWORD=u | |
Table1 | Active | true |
CachedUpdates | true | |
DatabaseName | my_database | |
TableName | CLIENTS | |
DataSource1 | DataSet | Table1 |
DBGrid1 | DataSource | DataSource1 |
DBNavigator1 | DataSource | DataSource1 |
DBImage1 | DataSource | DataSource1 |
DataField | IMAGE | |
LoginPrompt | false | |
Button1 | Caption | Сохранить |
Button2 | Caption | Отменить |
Button3 | Caption | Выход |
Нажатие на кнопки Button1 и Button2 приводит к попытке сохранения данных на сервере и к отмене внесенных изменений соответственно.
//--------------------------------------------------------------------------- #include <vcl\vcl.h> #pragma hdrstop #include "appl1.h" //--------------------------------------------------------------------------- #pragma link "Grids" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Table1->ApplyUpdates(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Table1->CancelUpdates(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Close(); } //---------------------------------------------------------------------------
При выполнении метода Post компонента Table1 новые записи накапливаются в кэше, а изменений в таблице, хранящейся на сервере, не происходит, что можно проконтролировать, например, с помощью утилиты Database Explorer. При нажатии на кнопку "Сохранить" внесенные записи переносятся на сервер, что также можно проконтролировать, перечитав редактируемую таблицу (рис.9):

Рис.9. Перенос содержимого кэша на сервер
| |