fpc/fcl/db/sqlite/testds.pas
2005-02-14 17:13:06 +00:00

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.