mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 10:29:48 +02:00
+ Fixes in TDBDataset etc. Changed MySQLDb to use database as well
This commit is contained in:
parent
df1fa8669a
commit
2e6d07b89e
@ -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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
10
fcl/db/db.pp
10
fcl/db/db.pp
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user