您可以使用 ADO.NET 提供的通用介面,撰寫各種 .NET Framework 資料提供者都可使用的單一程式碼集合。
當您撰寫各種 .NET Framework 資料提供者均能使用的程式碼時,請特別注意提供者專用的語法;例如,SQL 語法會依您存取的資料來源而有不同。如果您把 SQL 命令獨立為字串常數,則在改用不同的 .NET Framework 資料提供者時,程式碼會比較容易維護。
另一點要注意的是維持程式碼內參數建立的順序。SQL Server 的 .NET Framework 資料提供者不需要考慮這個問題,因為參數由名稱識別;但是,OLE DB 的 .NET Framework 資料提供者是按照參數加入參數集合的順序來指派參數值的,所以,保持程式碼內的參數順序是很好的習慣。
下列程式碼範例可使用於 SQL Server 的 .NET Framework 資料提供者、OLE DB 的 .NET Framework 資料提供者或 ODBC 的 .NET Framework 資料提供者。
' You can use either:
' Dim myConn As IDbConnection = New SqlConnection
' or:
' Dim myConn As IDbConnection = New OleDbConnection
' or:
' Dim myConn As IDbConnection = New OdbcConnection
' or:
' Dim myConn As IDbConnection = New OracleConnection
Dim myCommand As IDbCommand = myConn.CreateCommand()
myCommand.CommandText = "SELECT * FROM Customers"
Dim myReader As IDataReader = myCommand.ExecuteReader()
Do While myReader.Read()
Console.WriteLine("{0}" & vbTab & "{1}", myReader.GetString(0), myReader.GetString(1))
Loop
[C#]
// You can use either:
// IDbConnection myConn = new SqlConnection();
// or:
// IDbConnection myConn = new OleDbConnection();
// or:
// IDbConnection myConn = new OdbcConnection();
// or:
// IDbConnection myConn = new OracleConnection();
IDbCommand myCommand = myConn.CreateCommand();
myCommand.CommandText = "SELECT * FROM Customers";
IDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
Console.WriteLine("{0}\t{1}", myReader.GetString(0), myReader.GetString(1));