diff options
author | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2005-08-06 13:57:56 +0000 |
---|---|---|
committer | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2005-08-06 13:57:56 +0000 |
commit | 0f23387e54440a351a345139b7bbf5fd0927ac49 (patch) | |
tree | 1025bc791d2508e6c6e77d3ca4f6e273d41d9b71 | |
parent | a5a62b03058b39482a22b312374c71af1f0a7094 (diff) | |
download | fpc-0f23387e54440a351a345139b7bbf5fd0927ac49.tar.gz |
- Fixed date/time formats for sqldb and tdbf
- removed obsolete TSQLConnection.ObtainSQLStatementType
- added check for empty sql-statements to sqldb
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@803 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | fcl/db/dataset.inc | 76 | ||||
-rw-r--r-- | fcl/db/db.pp | 4 | ||||
-rw-r--r-- | fcl/db/fields.inc | 2 | ||||
-rw-r--r-- | fcl/db/sqldb/mysql/mysql4conn.pas | 1 | ||||
-rw-r--r-- | fcl/db/sqldb/postgres/pqconnection.pp | 1 | ||||
-rw-r--r-- | fcl/db/sqldb/sqldb.pp | 59 |
6 files changed, 20 insertions, 123 deletions
diff --git a/fcl/db/dataset.inc b/fcl/db/dataset.inc index 9c36b74cb2..c11e2a1fc3 100644 --- a/fcl/db/dataset.inc +++ b/fcl/db/dataset.inc @@ -489,78 +489,30 @@ begin Result:=nil; end; +function TDataSet.GetFieldData(Field: TField; Buffer: Pointer): Boolean; + +begin + Result := False; +end; + function TDataSet.GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; - function ConvertData(Field: TField; Source: TDateTimeRec): TDateTime; - var - TimeStamp: TTimeStamp; - begin - case Field.DataType of - ftDate: - begin - TimeStamp.Time := 0; - TimeStamp.Date := Source.Date; - end; - ftTime: - begin - TimeStamp.Time := Source.Time; - TimeStamp.Date := DateDelta; - end; - else - try - TimeStamp := MSecsToTimeStamp(Trunc(Source.DateTime)); - except - TimeStamp.Time := 0; - TimeStamp.Date := 0; - end; - end; -// Result := TimeStampToDateTime(TimeStamp); - Result := (TimeStamp.Date - DateDelta) + (TimeStamp.Time / MSecsPerDay); - end; +begin + Result := GetFieldData(Field, Buffer); +end; -var - d: TDateTimeRec; -begin - if NativeFormat then - Result := GetFieldData(Field, Buffer) else - if Field.DataType in [ ftDate, ftDateTime, ftTime ] then begin - Result := GetFieldData(Field, @d); - if Result then - TDateTime(Buffer^) := ConvertData(Field, d); - end else - Result := GetFieldData(Field, Buffer); +procedure TDataSet.SetFieldData(Field: TField; Buffer: Pointer); + +begin +// empty procedure end; procedure TDataSet.SetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean); - function ConvertData(Field: TField; Data: TDateTime): TDateTimeRec; - var - TimeStamp: TTimeStamp; - begin - TimeStamp.Time := Trunc(Frac(Data) * MSecsPerDay); - TimeStamp.Date := DateDelta + Trunc(System.Int(Data)); -// TimeStamp := DateTimeToTimeStamp(Data); - case Field.DataType of - ftDate: Result.Date := TimeStamp.Date; - ftTime: Result.Time := TimeStamp.Time; - else - Result.DateTime := TimeStampToMSecs(TimeStamp); - end; - end; - -var - d: TDateTimeRec; begin - if NativeFormat then - SetFieldData(Field, Buffer) - else - if Field.DataType in [ ftDate, ftDateTime, ftTime ] then begin - d := ConvertData(Field, TDateTime(Buffer^)); - SetFieldData(Field, @d); - end else - SetFieldData(Field, Buffer); + SetFieldData(Field, Buffer); end; Function TDataset.GetField (Index : Longint) : TField; diff --git a/fcl/db/db.pp b/fcl/db/db.pp index 3ff69e049b..0ee52837a5 100644 --- a/fcl/db/db.pp +++ b/fcl/db/db.pp @@ -1062,7 +1062,7 @@ type procedure GetBookmarkData(Buffer: PChar; Data: Pointer); virtual; abstract; function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag; virtual; abstract; function GetDataSource: TDataSource; virtual; - function GetFieldData(Field: TField; Buffer: Pointer): Boolean; overload; virtual; abstract; + function GetFieldData(Field: TField; Buffer: Pointer): Boolean; overload; virtual; function GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; overload; virtual; function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult; virtual; abstract; function GetRecordSize: Word; virtual; abstract; @@ -1081,7 +1081,7 @@ type function IsCursorOpen: Boolean; virtual; abstract; procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag); virtual; abstract; procedure SetBookmarkData(Buffer: PChar; Data: Pointer); virtual; abstract; - procedure SetFieldData(Field: TField; Buffer: Pointer); overload; virtual; abstract; + procedure SetFieldData(Field: TField; Buffer: Pointer); overload; virtual; procedure SetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean); overload; virtual; public constructor Create(AOwner: TComponent); override; diff --git a/fcl/db/fields.inc b/fcl/db/fields.inc index 8089ba8669..807a6288c9 100644 --- a/fcl/db/fields.inc +++ b/fcl/db/fields.inc @@ -558,7 +558,7 @@ begin Move (FValueBuffer^,Buffer^ ,DataSize); end else - Result:=FDataset.GetFieldData(Self,Buffer,False); + Result:=FDataset.GetFieldData(Self,Buffer); end; function TField.GetDataSize: Word; diff --git a/fcl/db/sqldb/mysql/mysql4conn.pas b/fcl/db/sqldb/mysql/mysql4conn.pas index 6476a6e3a8..aef5e59ec3 100644 --- a/fcl/db/sqldb/mysql/mysql4conn.pas +++ b/fcl/db/sqldb/mysql/mysql4conn.pas @@ -243,7 +243,6 @@ procedure TMySQLConnection.PrepareStatement(cursor: TSQLCursor; begin if assigned(AParams) and (AParams.count > 0) then DatabaseError('Parameters (not) yet supported for the MySQL SqlDB connection.',self); - ObtainSQLStatementType(cursor,buf); With Cursor as TMysqlCursor do begin FStatement:=Buf; diff --git a/fcl/db/sqldb/postgres/pqconnection.pp b/fcl/db/sqldb/postgres/pqconnection.pp index 494d71c23d..41387d86f6 100644 --- a/fcl/db/sqldb/postgres/pqconnection.pp +++ b/fcl/db/sqldb/postgres/pqconnection.pp @@ -381,7 +381,6 @@ var s : string; i : integer; begin - ObtainSQLStatementType(cursor,buf); with (cursor as TPQCursor) do begin FPrepared := False; diff --git a/fcl/db/sqldb/sqldb.pp b/fcl/db/sqldb/sqldb.pp index f77a2c4a01..4ffc0146c7 100644 --- a/fcl/db/sqldb/sqldb.pp +++ b/fcl/db/sqldb/sqldb.pp @@ -97,7 +97,6 @@ type procedure UpdateIndexDefs(var IndexDefs : TIndexDefs;TableName : string); virtual; function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; virtual; function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; virtual;abstract; - Procedure ObtainSQLStatementType(Cursor : TSQLCursor; SQLStr : string); public property Handle: Pointer read GetHandle; destructor Destroy; override; @@ -198,7 +197,6 @@ type function GetCanModify: Boolean; override; function ApplyRecUpdate(UpdateKind : TUpdateKind) : boolean; override; Function IsPrepared : Boolean; virtual; - procedure SetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean); overload; override; procedure SetFiltered(Value: Boolean); override; public procedure Prepare; virtual; @@ -314,54 +312,6 @@ begin end; {case} end; -Procedure TSQLConnection.ObtainSQLStatementType(Cursor : TSQLCursor; SQLStr : string); - -Var - L : Integer; - cmt : boolean; - P,PE,PP : PChar; - S : string; - -begin - L := Length(SQLstr); - - if L=0 then - begin - DatabaseError(SErrNoStatement); - exit; - end; - - P:=Pchar(SQLstr); - PP:=P; - Cmt:=False; - While ((P-PP)<L) do - begin - if not (P^ in [' ',#13,#10,#9]) then - begin - if not Cmt then - begin - // Check for comment. - Cmt:=(P^='/') and (((P-PP)<=L) and (P[1]='*')); - if not (cmt) then - Break; - end - else - begin - // Check for end of comment. - Cmt:=Not( (P^='*') and (((P-PP)<=L) and (P[1]='/')) ); - If not cmt then - Inc(p); - end; - end; - inc(P); - end; - PE:=P+1; - While ((PE-PP)<L) and (PE^ in ['0'..'9','a'..'z','A'..'Z','_']) do - Inc(PE); - Setlength(S,PE-P); - Move(P^,S[1],(PE-P)); - Cursor.FStatementType := StrToStatementType(s); -end; function TSQLConnection.GetSchemaInfoSQL( SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; @@ -529,12 +479,6 @@ begin Result := Assigned(FCursor) and FCursor.FPrepared; end; -procedure TSQLQuery.SetFieldData(Field: TField; Buffer: Pointer; - NativeFormat: Boolean); -begin - SetFieldData(Field, Buffer); -end; - Function TSQLQuery.AddFilter(SQLstr : string) : string; begin @@ -595,6 +539,9 @@ begin FSQLBuf := TrimRight(FSQL.Text); + if FSQLBuf = '' then + DatabaseError(SErrNoStatement); + SQLParser(FSQLBuf); if filtered then |