DBD-Redbase
view release on metacpan or search on metacpan
t/30insertfetch.t view on Meta::CPAN
# Main loop; leave this untouched, put tests after creating
# the new table.
#
while ( Testing() )
{
#
# Connect to the database
Test(
$state
or $dbh = DBI->connect( $test_dsn, $test_user, $test_password ),
'connect'
)
or ServerError();
#
# Find a possible new table name
#
Test( $state or $table = FindNewTable( $dbh ), 'FindNewTable' )
or DbiError( $dbh->err, $dbh->errstr );
#
# Create a new table; EDIT THIS!
#
Test(
$state
or (
$def = TableDefinition(
$table,
[ "id", "INTEGER", 4, 0 ],
[ "name", "CHAR", 64, 0 ],
[ "val", "INTEGER", 4, 0 ],
[ "txt", "CHAR", 64, 0 ]
)
and $dbh->do( $def )
),
'create',
$def
)
or DbiError( $dbh->err, $dbh->errstr );
#
# Insert a row into the test table.......
#
Test(
$state
or $dbh->do(
"INSERT INTO $table"
. " VALUES(1, 'Alligator Descartes', 1111,"
. " 'Some Text')"
),
'insert'
)
or DbiError( $dbh->err, $dbh->errstr );
#
# Now, try SELECT'ing the row out.
#
Test(
$state
or $cursor =
$dbh->prepare( "SELECT * FROM $table" . " WHERE id = 1" ),
'prepare select'
)
or DbiError( $dbh->err, $dbh->errstr );
Test( $state or $cursor->execute, 'execute select' )
or DbiError( $cursor->err, $cursor->errstr );
my ( $row, $errstr );
Test(
$state
or ( defined( $row = $cursor->fetchrow_arrayref )
&& !( $cursor->errstr ) ),
'fetch select'
)
or DbiError( $cursor->err, $cursor->errstr );
Test(
$state
or ( $row->[ 0 ] == 1
&& $row->[ 1 ] eq 'Alligator Descartes'
&& $row->[ 2 ] == 1111
&& $row->[ 3 ] eq 'Some Text' ),
'compare select'
)
or DbiError( $cursor->err, $cursor->errstr );
Test( $state or $cursor->finish, 'finish select' )
or DbiError( $cursor->err, $cursor->errstr );
Test( $state or undef $cursor || 1, 'undef select' );
#
# ...and delete it........
#
Test( $state or $dbh->do( "DELETE FROM $table WHERE id = 1" ), 'delete' )
or DbiError( $dbh->err, $dbh->errstr );
#
# Now, try SELECT'ing the row out. This should fail.
#
Test(
$state
or $cursor =
$dbh->prepare( "SELECT * FROM $table" . " WHERE id = 1" ),
'prepare select deleted'
)
or DbiError( $dbh->err, $dbh->errstr );
Test( $state or $cursor->execute, 'execute select deleted' )
or DbiError( $cursor->err, $cursor->errstr );
Test(
$state
or (
!defined( $row = $cursor->fetchrow_arrayref )
&& ( !defined( $errstr = $cursor->errstr )
|| $cursor->errstr eq '' )
),
'fetch select deleted'
)
or DbiError( $cursor->err, $cursor->errstr );
Test( $state or $cursor->finish, 'finish select deleted' )
or DbiError( $cursor->err, $cursor->errstr );
Test( $state or undef $cursor || 1, 'undef select deleted' );
#
# Finally drop the test table.
#
Test( $state or $dbh->do( "DROP TABLE $table" ), 'drop' )
or DbiError( $dbh->err, $dbh->errstr );
}
( run in 1.695 second using v1.01-cache-2.11-cpan-39bf76dae61 )