testds.pas 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. program testds;
  2. {$Mode ObjFpc}
  3. {$define DEBUGHEAP}
  4. uses
  5. {$ifdef DEBUGHEAP}
  6. Heaptrc,
  7. {$endif}
  8. {$ifdef Linux}
  9. cmem,
  10. {$endif}
  11. crt,sysutils,db,SqliteDS;
  12. var
  13. dsTest:TSQliteDataset;
  14. I:Integer;
  15. Procedure DumpField(F : Tfield);
  16. begin
  17. With F do
  18. begin
  19. Writeln ('FieldName : ',FieldName);
  20. Writeln ('FieldNo : ',FieldNo);
  21. Writeln ('Index : ',Index);
  22. Writeln ('DataSize : ',DataSize);
  23. Writeln ('Size : ',Size);
  24. Writeln ('DataType : ',FieldTypeNames[DataType]);
  25. Writeln ('Class : ',ClassName);
  26. Writeln ('Required : ',required);
  27. Writeln ('ReadOnly : ',ReadOnly);
  28. Writeln ('Visible : ',Visible);
  29. end;
  30. writeln('-------- Press a key to continue ----------');
  31. readkey;
  32. end;
  33. begin
  34. {$ifdef DEBUGHEAP}
  35. SetHeapTraceOutput('heaplog.txt');
  36. {$endif}
  37. dsTest:=TsqliteDataset.Create(nil);
  38. with dsTest do
  39. Begin
  40. FileName:='New.db';
  41. TableName:='NewTable';
  42. SQL:='SELECT _ROWID_,* from NewTable';
  43. Open;
  44. //writeln('SqliteReturnString after Open: ',SqliteReturnString);
  45. //readkey;
  46. Writeln ('Fields count : ',FieldCount);
  47. WriteLn('============DumpFields ============');
  48. For I:=0 to FieldCount-1 do
  49. DumpField(Fields[i]);
  50. writeln('Push a key to test -Edit-');
  51. readkey;
  52. clrscr;
  53. WriteLn('Old Code:',FieldbyName('Code').AsInteger);
  54. WriteLn('Old Name:',FieldbyName('Name').AsString);
  55. FieldbyName('Code').AsInteger:=12345;
  56. FieldbyName('Name').AsString:='Record Edited in TestDs.pas';
  57. WriteLn('New Code:',FieldbyName('Code').AsInteger);
  58. WriteLn('New Name:',FieldbyName('Name').AsString);
  59. writeln('Push a key to test -Append-');
  60. readkey;
  61. clrscr;
  62. Append;
  63. FieldbyName('Code').AsInteger:=22222;
  64. FieldbyName('Name').AsString:='This will be deleted';
  65. Post;
  66. WriteLn('First Record Appended - Code:',FieldbyName('Code').AsInteger);
  67. WriteLn('First Record Appended - Name:',FieldbyName('Name').AsString);
  68. Append;
  69. FieldbyName('Code').AsInteger:=3333;
  70. FieldbyName('Name').AsString:='This will stay';
  71. Post;
  72. WriteLn('Second Record Appended - Code:',FieldbyName('Code').AsInteger);
  73. WriteLn('Second Record Appended - Name:',FieldbyName('Name').AsString);
  74. writeln('Push a key to test -Delete-');
  75. readkey;
  76. clrscr;
  77. Prior;
  78. WriteLn('Current record:');
  79. Writeln('RowId:',Fields[0].AsInteger);
  80. WriteLn('Code: ',FieldbyName('Code').AsInteger);
  81. WriteLn('Name: ',FieldbyName('Name').AsString);
  82. if FieldbyName('Code').AsInteger = 22222 then
  83. Writeln('This record should be deleted');
  84. Delete;
  85. WriteLn('After Delete:');
  86. Writeln('RowId:',Fields[0].AsInteger);
  87. WriteLn('Code: ',FieldbyName('Code').AsInteger);
  88. WriteLn('Name: ',FieldbyName('Name').AsString);
  89. WriteLn('Try to find record with code = 22222');
  90. First;
  91. While Not Eof do
  92. begin
  93. if FieldbyName('Code').AsInteger = 22222 then
  94. Writeln('Record Found: It Should Not Occur')
  95. else
  96. Writeln('Record NOT Found: It''s OK');
  97. Next;
  98. end;
  99. readkey;
  100. ApplyUpdates;
  101. writeln('SqliteReturnString after ApplyUpdates: ',SqliteReturnString);
  102. Close;
  103. Destroy;
  104. end;
  105. end.