title: When should I be using Odbc, OleDb, SQLClient? What are the trade-offs
body: <p>I am starting off with a SQLServer database. So it would seem that I should use <code>System.Data.SqlClient</code> namespace. But, there is a chance that we might shut down our SqlServer database and go to MySql or Oracle. For this reason, I am coming up with a set of standards on how our .Net apps will communicate with the database, so as to make it easier to migrate to a different database system in the future if we needed to do so.</p>
  
  <p><strong>So here are the standards:</strong></p>
  
  <ol>
  <li>Use an ORM if possible (eg
  NHibernate) (No LINQ as it only
  supports SqlServer, but what about
  Entity framework and its support for
  Oracle and MySql?)</li>
  <li>If ORM is an over-kill, then use parameterized SQL queries.</li>
  <li>Use stored procedures only for long running or complex actions that
  need to be performed on the
  database.</li>
  </ol>
  
  <p>Which brings me to my <strong>main question at hand.</strong> 
  <strong><em>Which namespace should I be using to code my DAL?</em></strong></p>
  
  <p>It looks to me that the choice is between <code>System.Data.ODBC</code> and <code>System.Data.OleDB</code>:</p>
  
  <ul>
  <li>What are the trade-offs? </li>
  <li>Is one preferred over the other?</li>
  <li>What are your thoughts about the first 3 standards?</li>
  </ul>