mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 15:49:16 +02:00
* When a dataset is closed and it is not prepared it is assumed that a
problem occured, and unprepare is called to clean everything up. But in case the dataset is read from a data-packet, the dataset is also not prepared but no problem occured, so do not call unprepare * Always use AllocateCursorHandle to allocate a cursor, or else its type can be different from what the connection expects git-svn-id: trunk@13397 -
This commit is contained in:
parent
deb052c3f5
commit
3f98f6a5d0
@ -1026,9 +1026,12 @@ end;
|
||||
|
||||
procedure TCustomSQLQuery.InternalClose;
|
||||
begin
|
||||
if StatementType in [stSelect,stExecProcedure] then FreeFldBuffers;
|
||||
// Database and FCursor could be nil, for example if the database is not assigned, and .open is called
|
||||
if (not IsPrepared) and (assigned(database)) and (assigned(FCursor)) then TSQLConnection(database).UnPrepareStatement(FCursor);
|
||||
if not IsReadFromPacket then
|
||||
begin
|
||||
if StatementType in [stSelect,stExecProcedure] then FreeFldBuffers;
|
||||
// Database and FCursor could be nil, for example if the database is not assigned, and .open is called
|
||||
if (not IsPrepared) and (assigned(database)) and (assigned(FCursor)) then TSQLConnection(database).UnPrepareStatement(FCursor);
|
||||
end;
|
||||
if DefaultFields then
|
||||
DestroyFields;
|
||||
FIsEOF := False;
|
||||
@ -1216,7 +1219,8 @@ begin
|
||||
ReadFromFile:=IsReadFromPacket;
|
||||
if ReadFromFile then
|
||||
begin
|
||||
FCursor:=TSQLCursor.Create;
|
||||
if not assigned(fcursor) then
|
||||
FCursor := TSQLConnection(Database).AllocateCursorHandle;
|
||||
FCursor.FStatementType:=stSelect;
|
||||
FUpdateable:=True;
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user