.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "DBIx::Simple::Comparison 3pm" .TH DBIx::Simple::Comparison 3pm "2023-09-01" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DBIx::Simple::Comparison \- DBIx::Simple in DBI jargon .SH "DESCRIPTION" .IX Header "DESCRIPTION" This is just a simple and \fBinaccurate\fR overview of what \s-1DBI\s0 things the DBIx::Simple things represent, or the other way around. .PP This document can be useful to find the foo equivalent of bar. .PP \&\f(CW\*(C`?\*(C'\fR means that \s-1DBI\s0 doesn't have an equivalent or that I couldn't find one. .PP \&\f(CW\*(C`=\*(C'\fR means that DBIx::Simple provides a direct wrapper to the \s-1DBI\s0 function. .PP \&\f(CW\*(C`~\*(C'\fR means that DBIx::Simple's method does more or less the same, but usually in a more high level way: context sensitive, combining things, automatically taking care of something. .PP Note that DBIx::Simple is a wrapper around \s-1DBI.\s0 It is not \*(L"better\*(R" than \s-1DBI.\s0 In fact, DBIx::Simple cannot work without \s-1DBI.\s0 .PP Using \s-1DBI\s0 directly is always faster than using DBIx::Simple's equivalents. (For the computer, that is. For you, DBIx::Simple is supposed to be faster.) .SS "Classes, common names" .IX Subsection "Classes, common names" .Vb 1 \& use DBI ~ use DBIx::Simple \& \& $DBI::errstr = DBIx::Simple\->error \& \& DBI::db ~ DBIx::Simple \& $dbh ~ $db \& $dbh\->errstr = $db\->error \& \& connect ~ connect \& connect ~ new \& \& DBI::st ~ DBIx::Simple::Result \& ~ DBIx::Simple::Dummy \& $sth ~ $result .Ve .SS "Queries" .IX Subsection "Queries" \&\s-1DBI\s0 .PP .Vb 2 \& my $sth = $dbh\->prepare_cached($query); \& $sth\->execute(@values); .Ve .PP ~ DBIx::Simple .PP .Vb 1 \& my $result = $db\->query($query, $values); .Ve .SS "Results" .IX Subsection "Results" .Vb 1 \& DBI DBIx::Simple \& \& bind_columns ~ bind \& \& fetchrow_arrayref/fetch = fetch \& fetchrow_array ~ list \& *1 ~ flat \& [@{fetchrow_arrayref}] = array \& fetchall_arrayref ~ arrays \& fetchrow_hashref() *2*3 = hash \& fetchall_arrayref({}) *4 ~ hashes \& \& fetchall_hashref *2 = map_hashes \& ? ? map_arrays \& fetchall_hashref(1) *2 = map \& \& $sth\->{NAME_lc/NAME} = $result\->columns .Ve .PP *1 There's no fetch variant, but you can do \f(CW\*(C`{ @{ $dbh\->selectcol_arrayref(\*(AqSELECT ...\*(Aq, { Slice => [] }) } }\*(C'\fR. .PP *2 To receive the keys (column names) lowercased, use \f(CW\*(C`$db\->{FetchHashKeyName} = \*(AqNAME_lc\*(Aq\*(C'\fR. DBIx::Simple lower cases them by default. .PP *3 Or supply an argument, \f(CW\*(AqNAME_lc\*(Aq\fR. .PP *4 No, arrayref isn't a typo. When supplied an empty hash reference, \s-1DBI\s0's fetchall_arrayref actually returns hashrefs. This \s-1DBI\s0 method does not support lower casing of keys, DBIx::Simple does. .SS "Direct access" .IX Subsection "Direct access" .Vb 1 \& DBI DBIx::Simple \& \& $dbh = $db\->dbh \& $sth\->{$foo} = $result\->attr($foo) \& \& func = func \& \& begin_work = begin_work \& commit = commit \& rollback = rollback \& last_insert_id = last_insert_id \& rows = rows \& \& disconnect ~ disconnect \& finish ~ finish .Ve .SS "DBIx::Simple specific (?)" .IX Subsection "DBIx::Simple specific (?)" .Vb 9 \& keep_statements \& lc_columns \& iquery (via SQL::Interp) \& select, insert, update, delete (via SQL::Abstract) \& abstract (via SQL::Abstract) \& flat \& hashes \& map_arrays \& map .Ve .SH "AUTHOR" .IX Header "AUTHOR" Juerd Waalboer .SH "SEE ALSO" .IX Header "SEE ALSO" \&\s-1DBI\s0, DBIx::Simple