The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl

use strict;
use warnings;
use Test::More;

use DBI;
use SQL::Statement;

my $dbh = DBI->connect ("dbi:File:", undef, undef, { PrintError => 1 });

ok ($dbh->do ("create temp table duck (id integer, name varchar (10))"), "create");

{   ok (my $sth = $dbh->prepare ("select count (*) from duck"), "prepare count");

    sub count
    {
	my $expected_count = shift;
	ok ($sth->execute, "execute count");
	ok (my $r = $sth->fetch, "fetch count");
	is ($r->[0], $expected_count, "count = $expected_count");
	} # count
    }

count (0);
ok ($dbh->do ("insert into duck (id, name) values (1, 'donald')"), "insert donald");
count (1);
ok ($dbh->do ("insert into duck (id, name) values (2, 'kwik')"), "insert kwik");
count (2);
ok ($dbh->do ("insert into duck (id, name) values (3, 'kwek')"), "insert kwek");
count (3);
ok ($dbh->do ("insert into duck (id, name) values (4, 'kwak')"), "insert kwak");
count (4);

ok ($dbh->do ("delete from duck where id = 2"), "delete kwik");
# is ($dbh->rows, 1, "deleted rows"); # Not supported by base class DBD::File
count (3);

ok ($dbh->do ("delete from duck"), "delete all ducks");
# is ($dbh->rows, 3, "deleted rows"); # Not supported by base class DBD::File
count (0);

done_testing ();