Sadly, .NET fully supports making your code database agnostic but then they provide APIs that break it. IMHO: it's a really poor design decision on their part.

One framework for Java developers to look into is Hibernate. It supports totally database agnostic code. I routinely developer code for Electrotank clients in Derby (a free embeded database) and then give it to them to run against SQL Server, MySQL, Oracle and what not.

There is a .NET Hibernate project out there but I've not used it.

On the PHP/MySQL Prepared Statement front, these articles say its faster?
http://dev.mysql.com/tech-resources/...tatements.html
and more importantly:
http://www.databasejournal.com/featu...le.php/3599166

They both claim it's faster for the same reasons I mentioned about (query plan creation up front as well as caching the plan for subsequent queries). I'm not a PHP guy though (quite the opposite, I'm downright anti-php ) so I don't speak from experience there.

Have fun!