testds.pas 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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 dsTest:TSQliteDataset;
  13. I,Counter:Integer;
  14. Procedure DumpFieldDef(F : TfieldDef);
  15. begin
  16. With F do
  17. begin
  18. Writeln ('Name : ',Name);
  19. Writeln ('FieldNo : ',FieldNo);
  20. Writeln ('Size : ',Size);
  21. Writeln ('FieldClass : ',FieldClass.ClassName);
  22. Writeln ('Required : ',required);
  23. Writeln ('Precision : ',Precision);
  24. Writeln ('DataType : ',FieldTypeNames[DataType]);
  25. Writeln ('InternalCalcField : ',Internalcalcfield);
  26. end;
  27. writeln('------------------');
  28. readkey;
  29. end;
  30. Procedure DumpField(F : Tfield);
  31. begin
  32. With F do
  33. begin
  34. Writeln ('FieldName : ',FieldName);
  35. Writeln ('FieldNo : ',FieldNo);
  36. Writeln ('Index : ',Index);
  37. Writeln ('DataSize : ',DataSize);
  38. Writeln ('Size : ',Size);
  39. Writeln ('DataType : ',FieldTypeNames[DataType]);
  40. Writeln ('Class : ',ClassName);
  41. Writeln ('Required : ',required);
  42. Writeln ('ReadOnly : ',ReadOnly);
  43. Writeln ('Visible : ',Visible);
  44. end;
  45. writeln('------------------');
  46. end;
  47. Procedure DumpFieldData (F : TField);
  48. begin
  49. With F Do
  50. begin
  51. Writeln ('Field : ',FieldName);
  52. Writeln ('Data type : ',FieldTypeNames[DataType]);
  53. Writeln ('As String : ',Asstring);
  54. Case Datatype of
  55. ftSmallint, ftInteger, ftWord : Writeln ('As longint : ',AsLongint);
  56. ftBoolean : Writeln ('As Boolean : ',AsBoolean);
  57. ftFloat : Writeln ('As Float : ',AsFloat);
  58. ftDate, ftTime, ftDateTime : Writeln ('As DateTime : ',DateTimeToStr(AsDateTime));
  59. end;
  60. end;
  61. writeln('------------------');
  62. end;
  63. begin
  64. {$ifdef DEBUGHEAP}
  65. SetHeapTraceOutput('heaplog.txt');
  66. {$endif}
  67. dsTest:=TsqliteDataset.Create(nil);
  68. with dsTest do
  69. Begin
  70. FileName:='New.db';
  71. TableName:='NewTable';
  72. SQL:='SELECT _ROWID_,* from NewTable';
  73. Open;
  74. writeln('SqliteReturnString after Open: ',SqliteReturnString);
  75. readkey;
  76. Writeln ('Fielddefs count : ',FieldDefs.Count);
  77. WriteLn('==============DumpFieldDef==========');
  78. For I:=0 to FieldDefs.Count-1 do
  79. DumpFieldDef(FieldDefs.Items[i]);
  80. //readkey;
  81. Writeln ('Fields count : ',FieldCount);
  82. WriteLn('============DumpFields ============');
  83. For I:=0 to FieldCount-1 do
  84. DumpField(Fields[i]);
  85. WriteLn('============DumpFieldData==========');
  86. While Not Eof do
  87. begin
  88. For I:=0 to FieldCount-1 do
  89. DumpFieldData(Fields[I]);
  90. Next;
  91. end;
  92. writeln('Push a key to test -Edit-');
  93. readkey;
  94. clrscr;
  95. WriteLn('Old Code:',FieldbyName('Code').AsInteger);
  96. WriteLn('Old Name:',FieldbyName('Name').AsString);
  97. FieldbyName('Code').AsInteger:=12345;
  98. FieldbyName('Name').AsString:='Record Edited in TestDs.pas';
  99. WriteLn('New Code:',FieldbyName('Code').AsInteger);
  100. WriteLn('New Name:',FieldbyName('Name').AsString);
  101. writeln('Push a key to test -Append-');
  102. readkey;
  103. clrscr;
  104. Append;
  105. Post;
  106. FieldbyName('Code').AsInteger:=22222;
  107. FieldbyName('Name').AsString:='This will be deleted';
  108. WriteLn('First Record Appended - Code:',FieldbyName('Code').AsInteger);
  109. WriteLn('First Record Appended - Name:',FieldbyName('Name').AsString);
  110. Append;
  111. Post;
  112. FieldbyName('Code').AsInteger:=3333;
  113. FieldbyName('Name').AsString:='This will stay';
  114. WriteLn('Second Record Appended - Code:',FieldbyName('Code').AsInteger);
  115. WriteLn('Second Record Appended - Name:',FieldbyName('Name').AsString);
  116. writeln('Push a key to test -Delete-');
  117. readkey;
  118. clrscr;
  119. Prior;
  120. WriteLn('Current record:');
  121. Writeln('RowId:',Fields[0].AsInteger);
  122. WriteLn('Code: ',FieldbyName('Code').AsInteger);
  123. WriteLn('Name: ',FieldbyName('Name').AsString);
  124. if FieldbyName('Code').AsInteger = 22222 then
  125. Writeln('This record should be deleted');
  126. Delete;
  127. WriteLn('After Delete:');
  128. Writeln('RowId:',Fields[0].AsInteger);
  129. WriteLn('Code: ',FieldbyName('Code').AsInteger);
  130. WriteLn('Name: ',FieldbyName('Name').AsString);
  131. WriteLn('Try to find record with code = 22222');
  132. First;
  133. While Not Eof do
  134. begin
  135. if FieldbyName('Code').AsInteger = 22222 then
  136. Writeln('Record Found: It Should Not Occur');
  137. Next;
  138. end;
  139. readkey;
  140. ApplyUpdates;
  141. writeln('SqliteReturnString after ApplyUpdates: ',SqliteReturnString);
  142. Close;
  143. Destroy;
  144. end;
  145. end.