In this subject, I am biased toward using the most powerful tool (the DBI), even at the price of some additional typing. It is true that, when you are a beginner, you feel intimidated by the DBI, and you'd like some simplifying solution that will save you some typing and will hide those hideous database details.
I have a different opinion, I find the DBI limiting
, and I don't always use it when accessing databases. The DBI is good if you want to create an application that can be moved from one database to an other. I've seldomly encountered a need for this. Usually, a shop has settled on a database vendor, and uses Oracle or Sybase or db2 or something else. And many applications or tools are written specifically for one company, and they won't distribute it. Of course, in many cases, you could still use the DBI - but since the DBI is platform independent, it doesn't allow you to tap into the wealth of features Oracle, Sybase or other databases have to offer. If you don't need them, fine. But if you're doing prototyping, if you're replacing tools writting in other languages, or if you are writing debugging or admin tools, I'd rather have something that allows me to access everything the database has to offer.
Now, this post isn't intended to slap down the DBI - far from it. The DBI is great, and I've written many programs using it. But it isn't the end-all, and I've written many programs accessing databases which would have be harder when using the DBI.