mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 21:09:24 +02:00
fcl-db: tests: test that RowsAffected is specific per query not per connection (if more queries are executed over same connection)
git-svn-id: trunk@25377 -
This commit is contained in:
parent
4817a0e670
commit
c42890ed75
@ -1975,41 +1975,50 @@ begin
|
||||
end;
|
||||
|
||||
procedure TTestFieldTypes.TestRowsAffected;
|
||||
var Query2: TSQLQuery;
|
||||
begin
|
||||
with TSQLDBConnector(DBConnector) do
|
||||
begin
|
||||
AssertEquals(-1,query.RowsAffected);
|
||||
Query2 := GetNDataset(0) as TSQLQuery;
|
||||
|
||||
AssertEquals(-1, Query.RowsAffected);
|
||||
Connection.ExecuteDirect('create table FPDEV2 (' +
|
||||
' ID INT NOT NULL, ' +
|
||||
' NAME VARCHAR(250),' +
|
||||
' PRIMARY KEY (ID) ' +
|
||||
') ');
|
||||
' PRIMARY KEY (ID) )');
|
||||
// Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections
|
||||
TSQLDBConnector(DBConnector).CommitDDL;
|
||||
|
||||
Query.SQL.Text := 'insert into FPDEV2(ID,NAME) values (1,''test1'')';
|
||||
Query.ExecSQL;
|
||||
AssertEquals(1,query.RowsAffected);
|
||||
AssertEquals(1, Query.RowsAffected);
|
||||
Query.SQL.Text := 'insert into FPDEV2(ID,NAME) values (2,''test2'')';
|
||||
Query.ExecSQL;
|
||||
AssertEquals(1,query.RowsAffected);
|
||||
AssertEquals(1, Query.RowsAffected);
|
||||
|
||||
Query.SQL.Text := 'update FPDEV2 set NAME=''NewTest''';
|
||||
Query.ExecSQL;
|
||||
AssertEquals(2,query.RowsAffected);
|
||||
|
||||
AssertEquals(-1, Query2.RowsAffected);
|
||||
Query2.SQL.Text := 'insert into FPDEV2 values(3,''test3'')';
|
||||
Query2.ExecSQL;
|
||||
AssertEquals(1, Query2.RowsAffected);
|
||||
// tests, that RowsAffected is specific per query, not per connection
|
||||
// i.e. that it doesn't return only RowsAffected of last query executed over connection
|
||||
AssertEquals(2, Query.RowsAffected);
|
||||
|
||||
Query.SQL.Text := 'select * from FPDEV2';
|
||||
Query.Open;
|
||||
AssertTrue(query.RowsAffected<>0); // It should return -1 or the number of selected rows.
|
||||
query.Close;
|
||||
AssertTrue(query.RowsAffected<>0); // It should return -1 or the same as the last time it was called.
|
||||
if (SQLConnType = sqlite3) then // sqlite doesn't count the rowsaffected if there is no where-clause
|
||||
Query.SQL.Text := 'delete from FPDEV2 where 1'
|
||||
else
|
||||
Query.SQL.Text := 'delete from FPDEV2';
|
||||
AssertTrue(Query.RowsAffected<>0); // It should return -1 or the number of selected rows.
|
||||
Query.Close;
|
||||
AssertTrue(Query.RowsAffected<>0); // It should return -1 or the same as the last time it was called.
|
||||
|
||||
Query.SQL.Text := 'delete from FPDEV2 where ID>0'; // sqlite doesn't count the RowsAffected if there is no where-clause
|
||||
Query.ExecSQL;
|
||||
AssertEquals(2,query.RowsAffected);
|
||||
AssertEquals(3, Query.RowsAffected);
|
||||
Query.SQL.Text := 'delete from FPDEV2';
|
||||
Query.ExecSQL;
|
||||
AssertEquals(0,query.RowsAffected);
|
||||
AssertEquals(0, Query.RowsAffected);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user