#! /usr/bin/env perl # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation. # # Copyright (C) 2013 Wind River Systems, Inc. # # - It tests DBI and DBD::SQLite could work correctly which means one could # manipulate sqlite database in perl # - The test includes create/insert/update/delete/select, the five important # things one can do with a table use DBI; sub execute_sql { my $dbh = $_[0]; my $sql = $_[1]; my $sth = $dbh->prepare($sql) or die "Couldn't prepare statement: " . $dbh->errstr; $sth->execute(); print "$sql\n"; return $sth; } sub select_all { my $dbh = $_[0]; my $table = $_[1]; my $sth = &execute_sql($dbh, "Select * from $table"); print "-----------------------------------\n"; while (@data = $sth->fetchrow_array()) { my $name = $data[0]; my $id = $data[1]; print "$name: $id\n"; } print "\n"; $sth->finish; return $sth; } # A private, temporary in-memory database is created for the connection. # This in-memory database will vanish when the database connection is # closed. It is handy for your library tests. my $dbfile = ":memory:"; my $dbh = DBI->connect("DBI:SQLite:dbname=$dbfile","","") or die "Couldn't connect to database: " . DBI->errstr; print "Connect to SQLite's in-memory database\n"; &execute_sql($dbh, "Create table tbl1(name varchar(10), id smallint)"); &execute_sql($dbh, "Insert into tbl1 values('yocto',10)"); &execute_sql($dbh, "Insert into tbl1 values('windriver', 20)"); &select_all($dbh, "tbl1"); &execute_sql($dbh, "Update tbl1 set name = 'oe-core' where id = 10"); &execute_sql($dbh, "Delete from tbl1 where id = 20"); &select_all($dbh, "tbl1"); $dbh->disconnect; print "Test Success\n"