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:
lacak 2013-08-27 09:54:01 +00:00
parent 4817a0e670
commit c42890ed75

View File

@ -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;