[luau] Perl Frustration!!
Kevin English
kevin at english.net
Thu Aug 21 23:12:02 PDT 2003
ah, u have to extra lines here.....and u forgot the most important one
## start here...
use strict ; ## makes people declare variables with 'my'
my $sql = "select wkstncpu.sn, ipaddr from wkstncpu
where wkstncpu.code = $systemcode;";
my $sth = $dbh->prepare($sql)
or die "Cannot prepare: " . $dbh->errstr();
# start the query
$sth->execute() or die "Cannot execute: " . $sth->errstr();
# fetch result and assign
my ($cpusn ,$ip) = $sth->fetchrow_array();
$sth->finish;
perl, what a great language....
k
> On Sun, 17 Aug 2003 16:42:51 -1000
> Deven Phillips <dphillips at gothic-hawaii.com> wrote:
>
>> Blech!!! Perl DBI is frustrating in and of itself... The C API is much
>> cleaner!!!
>
> I disagree. I don't know about the C API, but the Perl DBI module makes
> perfect sense to me.
>
> Here is a piece of an equipment database I wrote:
>
> # simple query to get cpu s/n and ip for identification
> my $sql = "select wkstncpu.sn, ipaddr from wkstncpu
> where wkstncpu.code = $systemcode;";
> my $sth = $dbh->prepare($sql)
> or die "Cannot prepare: " . $dbh->errstr();
> # start the query
> $sth->execute() or die "Cannot execute: " . $sth->errstr();
> # fetch result and assign
> @row = $sth->fetchrow_array();
> $cpusn = $row[0];
> $ip = $row[1];
> $sth->finish;
>
>
> There are always five steps. 1) Stuff a SQL statement into a scalar
> (here $sql). 2) Prepare (precompile) the SQL. Not always reqired by the
> underlying database, but leave it in so your code doesn't break
> elsewhere. 3) Execute the SQL statement; this will create a result
> stream. 4) Read the result stream. There are several choices, here I use
> the fetchrow_array method to parse a record and place the pieces into
> succesive elements of the array @row. 5) Finish.
>
> Often the result set will contain multiple records. Here is an example
> from a different part of the program, showing a loop building HTML
> listbox elements:
>
> # cycle through result one row at a time
> # and fill listbox OPTION tags
> while (@row = $sth->fetchrow_array()) {
> print "<OPTION>" . join(",", @row) . "</OPTION>";
> }
>
> The only thing I grumble about is the way assigning $row[n] to a
> variable doesn't support built-in position-independent data element
> names. A schema change can trigger a complete application re-write.
> Instead of
>
>
> @row = $sth->fetchrow_array();
> $cpusn = $row[0];
> $ip = $row[1];
>
> I would like to be able to write
>
> $cpusn = $sth->fetchitembyname("wkstncpu.sn");
> $ip = $sth->fetchitembyname("wkstncpu.ipaddr");
>
> and have the location of the data in the record resolved by means of the
> database schema. Without taking a significant performance hit.
>
> --
> _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
> _/ _/
> _/ Gary Dunn _/
> _/ Open Slate Project _/
> _/ http://openslate.sourceforge.net/ _/
> _/ http://www.aloha.com/~knowtree/ _/
> _/ Honolulu _/
> _/ registered Linux user #273809 _/
> _/ _/
> _/ This tagline is umop apisdn. _/
> _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
>
>
> ---------------------------------------------
> This message was sent using Endymion MailMan.
> http://www.endymion.com/products/mailman/
>
>
> _______________________________________________
> LUAU mailing list
> LUAU at videl.ics.hawaii.edu
> http://videl.ics.hawaii.edu/mailman/listinfo/luau
More information about the LUAU
mailing list