소스 검색

+ Adapted to new calls for createtable and new field types

michael 21 년 전
부모
커밋
6d4da1a9ea
5개의 변경된 파일218개의 추가작업 그리고 219개의 파일을 삭제
  1. 39 20
      fcl/db/sqlite/browseds.pas
  2. 19 18
      fcl/db/sqlite/concurrencyds.pas
  3. 43 37
      fcl/db/sqlite/createds.pas
  4. 51 33
      fcl/db/sqlite/fillds.pas
  5. 66 111
      fcl/db/sqlite/testds.pas

+ 39 - 20
fcl/db/sqlite/browseds.pas

@@ -1,4 +1,4 @@
-program testds;
+program browseds;
 {$Mode ObjFpc}
 {$define DEBUGHEAP}
 uses 
@@ -8,34 +8,53 @@ uses
 {$ifdef Linux}
   cmem,
 {$endif}
-  crt,sysutils,SqliteDS,db;
+  crt,sysutils,sqliteds,db;
 
 var 
   dsTest:TSQliteDataset;
-  Counter:Integer;
+  I:Integer;
 
+procedure DumpFieldData (F : TField);
+begin
+  With F Do
+    begin
+    Writeln ('Field     : ',FieldName);
+    Writeln ('Data type : ',FieldTypeNames[DataType]);
+    Writeln ('As String : ',AsString);
+    Case Datatype of
+      ftSmallint, ftInteger, ftWord : Writeln ('As Longint : ',AsLongint);
+      ftBoolean : Writeln ('As Boolean : ',AsBoolean);
+      ftFloat : Writeln ('As Float : ',AsFloat);
+      ftDate, ftTime, ftDateTime : Writeln ('As DateTime : ',AsDateTime);
+    end;
+    end;
+  writeln('------------------');
+  //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;
+  dsTest:=TsqliteDataset.Create(nil);
+  with dsTest do
+  Begin
+    FileName:='New.db';
+    TableName:='NewTable';
+    Sql:= 'SELECT _ROWID_,* FROM NewTable'; 
+    Open;
+    WriteLn('RecordCount: ',RecordCount);
     First;
     while not Eof do
     begin
-      WriteLn('ROWID: ',FieldByName('_ROWID_').AsInteger);
-      WriteLn('Code: ',FieldByName('Code').AsInteger);
-	    WriteLn('Name: ',FieldByName('Name').AsString);
-	    Next;
-    end;  
-	  Close;
-	  Destroy;
-	end;
-	Readkey;
-	exit;
+      writeln(':::: Press a key to see data from record ',RecNo,' ::::');  
+      Readkey;
+      For I:=0 to FieldCount-1 do
+        DumpFieldData(Fields[I]);
+      Next;
+    end;
+    Close;
+    Destroy;
+  end;
+  Exit;
 end.

+ 19 - 18
fcl/db/sqlite/concurrencyds.pas

@@ -1,5 +1,6 @@
-program testds;
+program concurrencyds;
 {$Mode ObjFpc}
+{$define DEBUGHEAP}
 uses 
 {$ifdef DEBUGHEAP}
   Heaptrc,
@@ -16,29 +17,29 @@ begin
   {$ifdef DEBUGHEAP}
   SetHeapTraceOutput('heaplog.txt');
   {$endif}
-	dsOne:=TsqliteDataset.Create(nil);
-	dsTwo:=TsqliteDataset.Create(nil);
-	dsOne.FileName:='New.db';
-	dsTwo.FileName:='New.db';
-	dsOne.TableName:='NewTable';
-	dsTwo.TableName:='NewTable';
-	dsOne.Sql:= 'SELECT Code FROM NewTable'; 
-	dsTwo.Sql:= 'SELECT Name FROM NewTable'; 
-	dsOne.Open;
+  dsOne:=TsqliteDataset.Create(nil);
+  dsTwo:=TsqliteDataset.Create(nil);
+  dsOne.FileName:='New.db';
+  dsTwo.FileName:='New.db';
+  dsOne.TableName:='NewTable';
+  dsTwo.TableName:='NewTable';
+  dsOne.Sql:= 'SELECT Code FROM NewTable'; 
+  dsTwo.Sql:= 'SELECT Name FROM NewTable'; 
+  dsOne.Open;
   dsTwo.Open;
   writeln('Sqlite Return after opening dsTwo: ',dsTwo.SqliteReturnString);
   dsOne.First;
   dsTwo.First;
   WriteLn('Code: ',dsOne.FieldByName('Code').AsInteger);
-	WriteLn('Name: ',dsTwo.FieldByName('Name').AsString);
-	dsOne.Next;
+  WriteLn('Name: ',dsTwo.FieldByName('Name').AsString);
+  dsOne.Next;
   dsTwo.Next;
   WriteLn('Code: ',dsOne.FieldByName('Code').AsInteger);
-	WriteLn('Name: ',dsTwo.FieldByName('Name').AsString);
+  WriteLn('Name: ',dsTwo.FieldByName('Name').AsString);
   dsOne.Close;
-	dsTwo.Close;
-	dsOne.Destroy;
-	dsTwo.Destroy;
-	Readkey;
-	exit;
+  dsTwo.Close;
+  dsOne.Destroy;
+  dsTwo.Destroy;
+  Readkey;
+  exit;
 end.

+ 43 - 37
fcl/db/sqlite/createds.pas

@@ -1,38 +1,44 @@
-program testds;
-{$Mode ObjFpc}
-{$define DEBUGHEAP}
-uses 
-{$ifdef DEBUGHEAP}
-  Heaptrc,
-{$endif}
-{$ifdef Linux}
-  cmem,
-{$endif}
-  crt,sysutils,db,SqliteDS;
-
-var 
-  dsTest:TSQliteDataset;
-  Counter:Integer;
-
-begin 
-	//clrscr;
-	{$ifdef DEBUGHEAP}
-  SetHeapTraceOutput('heaplog.txt');
-  {$endif}
-	dsTest:=TsqliteDataset.Create(nil);
-	with dsTest do
-	Begin
-	  FileName:='New.db';
-	  if FileExists(FileName) then
-	    DeleteFile(FileName);
-	  TableName:='NewTable';
-	  with FieldDefs do
-	  begin
-	    Add('Code',ftInteger,0,False);
-	    Add('Name',ftString,0,False); 
-	  end; 
-	  CreateDataSet(True);
-	  Destroy;
-	end;
-	exit;
+program createds;
+{$Mode ObjFpc}
+{$define DEBUGHEAP}
+uses 
+{$ifdef DEBUGHEAP}
+  Heaptrc,
+{$endif}
+{$ifdef Linux}
+  cmem,
+{$endif}
+  crt,sysutils,db,SqliteDS;
+
+var 
+  dsTest:TSQliteDataset;
+
+begin 
+  {$ifdef DEBUGHEAP}
+  SetHeapTraceOutput('heaplog.txt');
+  {$endif}
+  dsTest:=TsqliteDataset.Create(nil);
+  with dsTest do
+  Begin
+    FileName:='New.db';
+    if FileExists(FileName) then
+      DeleteFile(FileName);
+    TableName:='NewTable';
+    with FieldDefs do
+    begin
+      Clear;
+      Add('Code',ftInteger,0,False);
+      Add('Name',ftString,0,False);
+      Add('Bool',ftBoolean,0,False); 
+      Add('Float',ftFloat,0,False);
+      Add('Word',ftWord,0,False);
+      Add('DateTime',ftDateTime,0,False);
+      Add('Date',ftDate,0,False);
+      Add('Time',ftTime,0,False);
+    end; 
+    CreateTable;
+    writeln('SqliteReturnString after CreateTable: ',SqliteReturnString);
+    Destroy;
+  end;
+  exit;
 end.

+ 51 - 33
fcl/db/sqlite/fillds.pas

@@ -1,4 +1,4 @@
-program testds;
+program fillds;
 {$Mode ObjFpc}
 {$define DEBUGHEAP}
 uses
@@ -12,40 +12,58 @@ uses
 
 var 
   dsTest:TSQliteDataset;
-  Counter:Integer;
 
 begin 
-	//clrscr;
-	{$ifdef DEBUGHEAP}
+  {$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;
-	  Append;
-	  FieldByName('Code').AsInteger:=100;
-	  FieldByName('Name').AsString:='Luiz';
-	  Post;
-	  Append;
-	  FieldByName('Code').AsInteger:=101;
-	  FieldByName('Name').AsString:='Américo';
-	  Post;
-	  Append;
-	  FieldByName('Code').AsInteger:=102;
-	  FieldByName('Name').AsString:='Ana';
-	  Post;
-	  Append;
-	  FieldByName('Code').AsInteger:=103;
-	  FieldByName('Name').AsString:='Luiza';
-	  Post;
-	  ApplyUpdates;
-	  writeln('Last sqlite reurn: ',SqliteReturnString);
-	  Close;
-	  Destroy;
-	end;
-	exit;
+  dsTest:=TsqliteDataset.Create(nil);
+  with dsTest do
+  Begin
+    FileName:='New.db';
+    TableName:='NewTable';
+    Sql:= 'SELECT _ROWID_,* FROM NewTable'; 
+    Open;
+    Append;
+    FieldByName('Code').AsInteger:=100;
+    FieldByName('Name').AsString:='Luiz';
+    FieldByName('Bool').AsBoolean:= True;
+    FieldByName('Float').AsFloat:=2;
+    FieldByName('DateTime').AsDateTime:=Now;
+    FieldByName('Time').AsDateTime:=Time;
+    FieldByName('Date').AsDateTime:=Date;
+    Post;
+    Append;
+    FieldByName('Code').AsInteger:=101;
+    FieldByName('Name').AsString:='Américo';
+    FieldByName('Bool').AsBoolean:= True;
+    FieldByName('Float').AsFloat:=1.1;
+    FieldByName('DateTime').AsDateTime:=Now;
+    FieldByName('Time').AsDateTime:=Time;
+    FieldByName('Date').AsDateTime:=Date;
+    Post;
+    Append;
+    FieldByName('Code').AsInteger:=102;
+    FieldByName('Name').AsString:='Ana';
+    FieldByName('Bool').AsBoolean:= False;
+    FieldByName('Float').AsFloat:=5.0E-324;
+    FieldByName('DateTime').AsDateTime:=Now;
+    FieldByName('Time').AsDateTime:=Time;
+    FieldByName('Date').AsDateTime:=Date;
+    Post;
+    Append;
+    FieldByName('Code').AsInteger:=103;
+    FieldByName('Name').AsString:='Luiza';
+    FieldByName('Bool').AsBoolean:= False;
+    FieldByName('Float').AsFloat:=1.7E308;
+    FieldByName('DateTime').AsDateTime:=Now;
+    FieldByName('Time').AsDateTime:=Time;
+    FieldByName('Date').AsDateTime:=Date;
+    Post;
+    ApplyUpdates;
+    writeln('Last sqlite return: ',SqliteReturnString);
+    Close;
+    Destroy;
+  end;
+  exit;
 end.

+ 66 - 111
fcl/db/sqlite/testds.pas

@@ -10,26 +10,9 @@ uses
 {$endif}
   crt,sysutils,db,SqliteDS;
 
-var dsTest:TSQliteDataset;
- I,Counter:Integer;
-
-Procedure DumpFieldDef(F : TfieldDef);
-
-begin
-  With F do
-    begin
-    Writeln ('Name              : ',Name);
-    Writeln ('FieldNo           : ',FieldNo);
-    Writeln ('Size              : ',Size);
-    Writeln ('FieldClass        : ',FieldClass.ClassName);
-    Writeln ('Required          : ',required);
-    Writeln ('Precision         : ',Precision);
-    Writeln ('DataType          : ',FieldTypeNames[DataType]);
-    Writeln ('InternalCalcField : ',Internalcalcfield);
-    end;
-  writeln('------------------'); 
-  readkey; 
-end;
+var 
+  dsTest:TSQliteDataset;
+  I:Integer;
 
 Procedure DumpField(F : Tfield);
 
@@ -47,109 +30,81 @@ begin
     Writeln ('ReadOnly  : ',ReadOnly);
     Writeln ('Visible   : ',Visible);
     end;
-  writeln('------------------');  
-end;
-
-Procedure DumpFieldData (F : TField);
-
-begin
-  With F Do
-    begin
-    Writeln ('Field     : ',FieldName);
-    Writeln ('Data type : ',FieldTypeNames[DataType]);
-    Writeln ('As String : ',Asstring);
-    Case Datatype of
-      ftSmallint, ftInteger, ftWord : Writeln ('As longint : ',AsLongint);
-      ftBoolean : Writeln ('As Boolean : ',AsBoolean);
-      ftFloat : Writeln ('As Float : ',AsFloat);
-      ftDate, ftTime, ftDateTime : Writeln ('As DateTime : ',DateTimeToStr(AsDateTime));
-    end;
-    end;
-  writeln('------------------');  
+  writeln('-------- Press a key to continue ----------'); 
+  readkey; 
 end;
 
-
 begin 
-	{$ifdef DEBUGHEAP}
+  {$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 ('Fielddefs count : ',FieldDefs.Count);
-    WriteLn('==============DumpFieldDef==========');
-    For I:=0 to FieldDefs.Count-1 do
-      DumpFieldDef(FieldDefs.Items[i]);
-    //readkey;  
+  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('============DumpFieldData==========');
-    While Not Eof do
-    begin  
-      For I:=0 to FieldCount-1 do
-        DumpFieldData(Fields[I]);
-      Next;  
-    end;
-	  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;
-	  Post;
-	  FieldbyName('Code').AsInteger:=22222;
-	  FieldbyName('Name').AsString:='This will be deleted';
-	  WriteLn('First Record Appended - Code:',FieldbyName('Code').AsInteger);
-	  WriteLn('First Record Appended - Name:',FieldbyName('Name').AsString);
-	  Append;
-	  Post;
-	  FieldbyName('Code').AsInteger:=3333;
-	  FieldbyName('Name').AsString:='This will stay';
-	  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('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('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
+    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');
+        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;
+    readkey; 
+    ApplyUpdates;
+    writeln('SqliteReturnString after ApplyUpdates: ',SqliteReturnString);
+    Close;
+    Destroy;
+  end;
 end.