+ Fixes in TDBDataset etc. Changed MySQLDb to use database as well

This commit is contained in:
michael 2003-08-16 16:42:21 +00:00
parent df1fa8669a
commit 2e6d07b89e
7 changed files with 725 additions and 584 deletions

View File

@ -66,6 +66,8 @@ constructor TDatabase.Create(AOwner: TComponent);
begin begin
Inherited Create(AOwner); Inherited Create(AOwner);
FParams:=TStringlist.Create;
FDatasets:=TList.Create;
end; end;
destructor TDatabase.Destroy; destructor TDatabase.Destroy;
@ -74,6 +76,7 @@ begin
Connected:=False; Connected:=False;
RemoveDatasets; RemoveDatasets;
FDatasets.Free; FDatasets.Free;
FParams.Free;
Inherited Destroy; Inherited Destroy;
end; end;
@ -173,9 +176,27 @@ begin
end; end;
end; end;
Procedure TDBDataset.CheckDatabase;
begin
If (FDatabase=Nil) then
DatabaseError(SErrNoDatabaseAvailable,Self)
end;
Destructor TDBDataset.Destroy;
begin
Database:=Nil;
Inherited;
end;
{ {
$Log$ $Log$
Revision 1.3 2002-09-07 15:15:22 peter Revision 1.4 2003-08-16 16:42:21 michael
+ Fixes in TDBDataset etc. Changed MySQLDb to use database as well
Revision 1.3 2002/09/07 15:15:22 peter
* old logs removed and tabs fixed * old logs removed and tabs fixed
} }

View File

@ -1145,7 +1145,10 @@ type
Private Private
FDatabase : TDatabase; FDatabase : TDatabase;
Procedure SetDatabase (Value : TDatabase); Procedure SetDatabase (Value : TDatabase);
Protected
Procedure CheckDatabase;
Public Public
Destructor destroy; override;
Property DataBase : TDatabase Read FDatabase Write SetDatabase; Property DataBase : TDatabase Read FDatabase Write SetDatabase;
end; end;
@ -1161,7 +1164,7 @@ type
FConnected : Boolean; FConnected : Boolean;
FDataBaseName : String; FDataBaseName : String;
FDataSets : TList; FDataSets : TList;
FDirectOry : String; FDirectory : String;
FKeepConnection : Boolean; FKeepConnection : Boolean;
FLoginPrompt : Boolean; FLoginPrompt : Boolean;
FOnLogin : TLoginEvent; FOnLogin : TLoginEvent;
@ -1459,7 +1462,10 @@ end.
{ {
$Log$ $Log$
Revision 1.9 2003-05-15 15:15:15 michael Revision 1.10 2003-08-16 16:42:21 michael
+ Fixes in TDBDataset etc. Changed MySQLDb to use database as well
Revision 1.9 2003/05/15 15:15:15 michael
+ Database class in TDBDataset is public, not published + Database class in TDBDataset is public, not published
Revision 1.8 2003/05/08 21:52:41 michael Revision 1.8 2003/05/08 21:52:41 michael

View File

@ -43,9 +43,15 @@ Const
SDatasetReadOnly = 'Dataset is read-only.'; SDatasetReadOnly = 'Dataset is read-only.';
SNeedField = 'Field %s is required, but not supplied.'; SNeedField = 'Field %s is required, but not supplied.';
SNotInEditState = 'Operation not allowed, dataset "%s" is not in an edit state.'; SNotInEditState = 'Operation not allowed, dataset "%s" is not in an edit state.';
SErrNoDatabaseAvailable = 'Invalid operation: Not attached to database';
{ {
$Log$ $Log$
Revision 1.4 2002-09-07 15:15:23 peter Revision 1.5 2003-08-16 16:42:21 michael
+ Fixes in TDBDataset etc. Changed MySQLDb to use database as well
Revision 1.4 2002/09/07 15:15:23 peter
* old logs removed and tabs fixed * old logs removed and tabs fixed
} }

View File

@ -1,8 +1,8 @@
# #
# Don't edit, this file is generated by FPCMake Version 1.1 [2003/04/01] # Don't edit, this file is generated by FPCMake Version 1.1 [2003/06/26]
# #
default: all default: all
MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos macosx emx MAKEFILETARGETS=linux win32
override PATH:=$(subst \,/,$(PATH)) override PATH:=$(subst \,/,$(PATH))
ifeq ($(findstring ;,$(PATH)),) ifeq ($(findstring ;,$(PATH)),)
inUnix=1 inUnix=1
@ -32,7 +32,7 @@ inOS2=1
endif endif
endif endif
else else
ifneq ($(findstring cygwin,$(MACHTYPE)),) ifneq ($(findstring cygdrive,$(PATH)),)
inCygWin=1 inCygWin=1
endif endif
endif endif
@ -205,7 +205,7 @@ endif
PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
override PACKAGE_NAME=fcl override PACKAGE_NAME=fcl
override TARGET_UNITS+=mysqldb override TARGET_UNITS+=mysqldb
override TARGET_EXAMPLES+=testm override TARGET_EXAMPLES+=mtest
override CLEAN_UNITS+=mysql mysql_com mysql_version override CLEAN_UNITS+=mysql mysql_com mysql_version
override INSTALL_FPCPACKAGE=y override INSTALL_FPCPACKAGE=y
override COMPILER_OPTIONS+=-S2 override COMPILER_OPTIONS+=-S2
@ -519,6 +519,12 @@ ifeq ($(OS_TARGET),macos)
EXEEXT= EXEEXT=
FPCMADE=fpcmade.mcc FPCMADE=fpcmade.mcc
endif endif
ifeq ($(OS_TARGET),darwin)
EXEEXT=
HASSHAREDLIB=1
FPCMADE=fpcmade.darwin
ZIPSUFFIX=darwin
endif
else else
ifeq ($(OS_TARGET),go32v1) ifeq ($(OS_TARGET),go32v1)
PPUEXT=.pp1 PPUEXT=.pp1
@ -877,76 +883,40 @@ TAREXT=.tar.gz
endif endif
override REQUIRE_PACKAGES=rtl mysql override REQUIRE_PACKAGES=rtl mysql
ifeq ($(OS_TARGET),linux) ifeq ($(OS_TARGET),linux)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1 REQUIRE_PACKAGES_MYSQL=1
endif endif
ifeq ($(OS_TARGET),go32v2) endif
ifeq ($(OS_TARGET),linux)
ifeq ($(CPU_TARGET),m68k)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1 REQUIRE_PACKAGES_MYSQL=1
endif endif
endif
ifeq ($(OS_TARGET),linux)
ifeq ($(CPU_TARGET),powerpc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),linux)
ifeq ($(CPU_TARGET),sparc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),linux)
ifeq ($(CPU_TARGET),x86_64)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
endif
ifeq ($(OS_TARGET),win32) ifeq ($(OS_TARGET),win32)
ifeq ($(CPU_TARGET),i386)
REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1 REQUIRE_PACKAGES_MYSQL=1
endif endif
ifeq ($(OS_TARGET),os2)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),freebsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),beos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),netbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),amiga)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),atari)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),sunos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),qnx)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),netware)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),openbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),wdosx)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),palmos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),macos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),macosx)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif
ifeq ($(OS_TARGET),emx)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_MYSQL=1
endif endif
ifdef REQUIRE_PACKAGES_RTL ifdef REQUIRE_PACKAGES_RTL
PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR)))))) PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR))))))
@ -1119,7 +1089,7 @@ override COMPILER:=$(FPC) $(FPCOPT)
ifeq (,$(findstring -s ,$(COMPILER))) ifeq (,$(findstring -s ,$(COMPILER)))
EXECPPAS= EXECPPAS=
else else
ifeq ($(OS_SOURCE),$(OS_TARGET)) ifeq ($(FULL_SOURCE),$(FULL_TARGET))
EXECPPAS:=@$(PPAS) EXECPPAS:=@$(PPAS)
endif endif
endif endif

View File

@ -7,7 +7,7 @@ main=fcl
[target] [target]
units=mysqldb units=mysqldb
examples=testm examples=mtest
[clean] [clean]
units=mysql mysql_com mysql_version units=mysql mysql_com mysql_version

View File

@ -13,6 +13,8 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************} **********************************************************************}
{$mode objfpc}
{$H+}
program mtest; program mtest;
uses db,sysutils,mysqldb; uses db,sysutils,mysqldb;
@ -74,6 +76,7 @@ begin
end; end;
Var Var
Dbase : TMySQLDatabase;
Data : TMysqldataset; Data : TMysqldataset;
I,Count : longint; I,Count : longint;
Bookie : TBookMarkStr; Bookie : TBookMarkStr;
@ -112,77 +115,95 @@ begin
Writeln ('Usage : mtest db user pwd sql'); Writeln ('Usage : mtest db user pwd sql');
Halt(1); Halt(1);
end; end;
Log ('Creating Dataset'); Log ('Creating Database');
Data:=TMysqlDataset.Create(Nil); DBase:=TMySQLDatabase.Create(Nil);
With Data do Try
begin With DBase do
Log('Setting database'); begin
Database:=Paramstr(1); Log('Setting database');
Log('Setting user'); DatabaseName:=Paramstr(1);
User:=Paramstr(2); Log('Setting user');
Log('Setting password'); UserName:=Paramstr(2);
PassWord := Paramstr(3); Log('Setting password');
Log('Setting SQL'); PassWord := Paramstr(3);
SQL.text := Paramstr(4); Log('Connecting');
Log('Opening Dataset'); Connected:=True;
Open; end;
Log('Dumping fielddefs : '); Log ('Creating Dataset');
Writeln ('Fielddefs count : ',FieldDefs.Count); Data:=TMysqlDataset.Create(Nil);
For I:=0 to FieldDefs.Count-1 do
DumpFieldDef(FieldDefs.Items[i]);
Writeln ('Fields count : ',FieldCount);
For I:=0 to FieldCount-1 do
DumpField(Fields[i]);
ScrollForward;
ScrollBackWard;
Writeln ('Going to last :');
writeln ('---------------');
Last;
ScrollBackWard;
ScrollForward;
Writeln ('Going to first:');
First;
Count:=0;
Writeln ('Browsing Forward:');
Writeln ('------------------');
With Data do With Data do
While NOT EOF do Try
begin Log('Setting database property');
Inc(Count); Database:=DBase;
If Count=recordCount div 2 then Log('Setting SQL');
begin SQL.text := Paramstr(4);
Writeln ('Setting bookmark on record'); Log('Opening Dataset');
Bookie:=Bookmark; Open;
Writeln ('Got data : "',Bookie,'"'); Log('Dumping fielddefs : ');
end; Writeln ('Fielddefs count : ',FieldDefs.Count);
For I:=0 to FieldDefs.Count-1 do
DumpFieldDef(FieldDefs.Items[i]);
Writeln ('Fields count : ',FieldCount);
For I:=0 to FieldCount-1 do
DumpField(Fields[i]);
ScrollForward;
ScrollBackWard;
Writeln ('Going to last :');
writeln ('---------------');
Last;
ScrollBackWard;
ScrollForward;
Writeln ('Going to first:');
First;
Count:=0;
Writeln ('Browsing Forward:');
Writeln ('------------------');
With Data do
While NOT EOF do
begin
Inc(Count);
If Count=recordCount div 2 then
begin
Writeln ('Setting bookmark on record');
Bookie:=Bookmark;
Writeln ('Got data : "',Bookie,'"');
end;
For I:=0 to FieldCount-1 do
DumpFieldData(Fields[I]);
Next;
end;
Writeln ('Jumping to bookmark',Bookie);
BookMark:=Bookie;
Writeln ('Dumping Record : ');
For I:=0 to FieldCount-1 do
DumpFieldData(Fields[I]);
Next;
Writeln ('Dumping Next Record : ');
For I:=0 to FieldCount-1 do For I:=0 to FieldCount-1 do
DumpFieldData(Fields[I]); DumpFieldData(Fields[I]);
Next; Prior;
end; Prior;
Writeln ('Jumping to bookmark',Bookie); Writeln ('Dumping Previous Record : ');
BookMark:=Bookie; For I:=0 to FieldCount-1 do
Writeln ('Dumping Record : '); DumpFieldData(Fields[I]);
For I:=0 to FieldCount-1 do Log('Closing Dataset');
DumpFieldData(Fields[I]); Close;
Next; Log('End.');
Writeln ('Dumping Next Record : '); Finally
For I:=0 to FieldCount-1 do Free;
DumpFieldData(Fields[I]); end;
Prior; Finally
Prior; Writeln('Freeing database');
Writeln ('Dumping Previous Record : '); DBase.free;
For I:=0 to FieldCount-1 do end;
DumpFieldData(Fields[I]);
Log('Closing Dataset');
Close;
Log('End.');
Free;
end;
end. end.
{ {
$Log$ $Log$
Revision 1.2 2002-09-07 15:15:23 peter Revision 1.3 2003-08-16 16:42:21 michael
+ Fixes in TDBDataset etc. Changed MySQLDb to use database as well
Revision 1.2 2002/09/07 15:15:23 peter
* old logs removed and tabs fixed * old logs removed and tabs fixed
} }

File diff suppressed because it is too large Load Diff