The System.Data namespace contains the interfaces implemented by different dot net framework data providers, such as:
- IDbConnection implemented by SqlConnection, OracleConnection, OleDbConnection, OdbcConnection classes represents a connection with the database server
- IDbCommand implemented by SqlCommand, OracleCommand, OleDbCommand, OdbcCommand classes represents an SQL command passed to the database server
- IDbDataAdapter implemented by SqlDataAdapter, OracleDataAdapter, OleDbDataAdapter, OdbcDataAdapter classes represents a data adapter used to fill the data set in the disconnected environment of the ADO.Net
- IDataReader implemented by SqlDataReader, OracleDataReader, OleDbDataReader, OdbcDataReader classes represents a data reader used to read records from the database server, analogous to read only, forward only cursor
- IDbTransaction implemented by SqlTransaction, OracleTransaction, OleDbTransaction, OdbcTransaction classes represents a transaction established with the database server
We strongly recommend the readers to use the references of these interface type to perform the
database operations wherever possible. Using these, you can write a code that is data provider independent. Consider a data access module which is supplied the database connection and which performs the database operations using this connection. This module does not know which data provider the connection belongs and uses the interface approach. Following code demonstrate this data access module
C# Version
internal class DataAccessModule { private IDbConnection conn; private IDbCommand cmd; private const string GetValueCmdText ="SELECT value FROM MyTable WHERE name = '"; public DataAccessModule(IDbConnection conn) { this.conn = conn; cmd = conn.CreateCommand(); conn.Open(); } public string GetValue(string name) { cmd.CommandText = GetValueCmdText + name + "'"; IDataReader reader = cmd.ExecuteReader(); if(reader.Read()) { return reader["value"].ToString(); } else { return null; } } // more functions... }
Friend Class DataAccessModule Private conn As IDbConnection Private cmd As IDbCommand Private Const GetValueCmdText As String ="SELECT value FROM MyTable WHERE name = '" Public Sub New(ByVal conn As IDbConnection) Me.conn = conn cmd = conn.CreateCommand() conn.Open() End Sub Public Function GetValue(ByVal name As String) As String cmd.CommandText = GetValueCmdText + name + "'" Dim reader As IDataReader = cmd.ExecuteReader() If (reader.Read()) Then Return reader("value").ToString() Else Return Nothing End If End Function ' More Functions.... End Class
No comments:
Post a Comment