mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-31 00:11:31 +01:00
111 lines
3.1 KiB
ObjectPascal
111 lines
3.1 KiB
ObjectPascal
program testds;
|
|
{$Mode ObjFpc}
|
|
{$define DEBUGHEAP}
|
|
uses
|
|
{$ifdef DEBUGHEAP}
|
|
Heaptrc,
|
|
{$endif}
|
|
{$ifdef Linux}
|
|
cmem,
|
|
{$endif}
|
|
crt,sysutils,db,SqliteDS;
|
|
|
|
var
|
|
dsTest:TSQliteDataset;
|
|
I:Integer;
|
|
|
|
Procedure DumpField(F : Tfield);
|
|
|
|
begin
|
|
With F do
|
|
begin
|
|
Writeln ('FieldName : ',FieldName);
|
|
Writeln ('FieldNo : ',FieldNo);
|
|
Writeln ('Index : ',Index);
|
|
Writeln ('DataSize : ',DataSize);
|
|
Writeln ('Size : ',Size);
|
|
Writeln ('DataType : ',FieldTypeNames[DataType]);
|
|
Writeln ('Class : ',ClassName);
|
|
Writeln ('Required : ',required);
|
|
Writeln ('ReadOnly : ',ReadOnly);
|
|
Writeln ('Visible : ',Visible);
|
|
end;
|
|
writeln('-------- Press a key to continue ----------');
|
|
readkey;
|
|
end;
|
|
|
|
begin
|
|
{$ifdef DEBUGHEAP}
|
|
SetHeapTraceOutput('heaplog.txt');
|
|
{$endif}
|
|
dsTest:=TsqliteDataset.Create(nil);
|
|
with dsTest do
|
|
Begin
|
|
FileName:='New.db';
|
|
TableName:='NewTable';
|
|
SQL:='SELECT _ROWID_,* from NewTable';
|
|
Open;
|
|
//writeln('SqliteReturnString after Open: ',SqliteReturnString);
|
|
//readkey;
|
|
Writeln ('Fields count : ',FieldCount);
|
|
WriteLn('============DumpFields ============');
|
|
For I:=0 to FieldCount-1 do
|
|
DumpField(Fields[i]);
|
|
writeln('Push a key to test -Edit-');
|
|
readkey;
|
|
clrscr;
|
|
WriteLn('Old Code:',FieldbyName('Code').AsInteger);
|
|
WriteLn('Old Name:',FieldbyName('Name').AsString);
|
|
FieldbyName('Code').AsInteger:=12345;
|
|
FieldbyName('Name').AsString:='Record Edited in TestDs.pas';
|
|
WriteLn('New Code:',FieldbyName('Code').AsInteger);
|
|
WriteLn('New Name:',FieldbyName('Name').AsString);
|
|
writeln('Push a key to test -Append-');
|
|
readkey;
|
|
clrscr;
|
|
Append;
|
|
FieldbyName('Code').AsInteger:=22222;
|
|
FieldbyName('Name').AsString:='This will be deleted';
|
|
Post;
|
|
WriteLn('First Record Appended - Code:',FieldbyName('Code').AsInteger);
|
|
WriteLn('First Record Appended - Name:',FieldbyName('Name').AsString);
|
|
Append;
|
|
FieldbyName('Code').AsInteger:=3333;
|
|
FieldbyName('Name').AsString:='This will stay';
|
|
Post;
|
|
WriteLn('Second Record Appended - Code:',FieldbyName('Code').AsInteger);
|
|
WriteLn('Second Record Appended - Name:',FieldbyName('Name').AsString);
|
|
writeln('Push a key to test -Delete-');
|
|
readkey;
|
|
clrscr;
|
|
Prior;
|
|
WriteLn('Current record:');
|
|
Writeln('RowId:',Fields[0].AsInteger);
|
|
WriteLn('Code: ',FieldbyName('Code').AsInteger);
|
|
WriteLn('Name: ',FieldbyName('Name').AsString);
|
|
if FieldbyName('Code').AsInteger = 22222 then
|
|
Writeln('This record should be deleted');
|
|
Delete;
|
|
WriteLn('After Delete:');
|
|
Writeln('RowId:',Fields[0].AsInteger);
|
|
WriteLn('Code: ',FieldbyName('Code').AsInteger);
|
|
WriteLn('Name: ',FieldbyName('Name').AsString);
|
|
|
|
WriteLn('Try to find record with code = 22222');
|
|
First;
|
|
While Not Eof do
|
|
begin
|
|
if FieldbyName('Code').AsInteger = 22222 then
|
|
Writeln('Record Found: It Should Not Occur')
|
|
else
|
|
Writeln('Record NOT Found: It''s OK');
|
|
Next;
|
|
end;
|
|
readkey;
|
|
ApplyUpdates;
|
|
writeln('SqliteReturnString after ApplyUpdates: ',SqliteReturnString);
|
|
Close;
|
|
Destroy;
|
|
end;
|
|
end.
|