I disagree. DBI does not provide an application-level
interface to databases. It provides a somewhat
database-independent interface to databases, but this is
not the same as an application-level interface to databses.
Furthermore, the interface is not entirely database
independent. First, the generated SQL is not database
independent. With an extension of DBI, DBIx::Recordset,
it is database independent.
For a five-page critique of DBI, see my submission to the
Perl Journal:
http://lnc.usc.edu/~brannon/consulting/dbix.html