How To Create Three Tier Architecture in C# .net
First we add Class Library Project
Now add an Interface
Code for
IDBManager.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Data.Odbc;
using
System.Data.SqlClient;
using
System.Data.OleDb;
using
System.Data.OracleClient;
using
System.Data;
namespace
dataaccesslayer
{
public enum DataProvider
{
Oracle, SqlServer, OleDb, Odbc
}
public interface IDBManager
{
DataProvider
ProviderType
{
get;
set;
}
string
ConnectionString
{
get;
set;
}
IDbConnection
Connection
{
get;
}
IDbTransaction
Transaction
{
get;
}
IDataReader
DataReader
{
get;
}
IDbCommand
Command
{
get;
}
IDbDataParameter[]
Parameters
{
get;
}
void
Open();
void
BeginTransaction();
void
CommitTransaction();
void
CreateParameters(int paramsCount);
void
AddParameters(int index, string paramName, object
objValue);
IDataReader
ExecuteReader(CommandType commandType, string commandText);
DataSet
ExecuteDataSet(CommandType commandType, string commandText);
object
ExecuteScalar(CommandType commandType, string commandText);
int
ExecuteNonQuery(CommandType commandType, string commandText);
void
CloseReader();
void
Close();
void
Dispose();
}
}
Now add a Class DBManager.cs
Code for DBManager.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Data;
using
System.Data.SqlClient;
using
System.Data.OleDb;
using
System.Data.Odbc;
using
System.Data.OracleClient;
namespace
dataaccesslayer
{
public sealed class DBManagerFactory
{
private
DBManagerFactory() { }
public static IDbConnection
GetConnection(DataProvider providerType)
{
IDbConnection
iDbConnection = null;
switch
(providerType)
{
case
DataProvider.SqlServer:
iDbConnection = new SqlConnection();
break;
case
DataProvider.OleDb:
iDbConnection = new OleDbConnection();
break;
case
DataProvider.Odbc:
iDbConnection = new OdbcConnection();
break;
case
DataProvider.Oracle:
iDbConnection = new OracleConnection();
break;
default:
return
null;
}
return
iDbConnection;
}
public static IDbCommand
GetCommand(DataProvider providerType)
{
switch
(providerType)
{
case DataProvider.SqlServer:
return
new SqlCommand();
case
DataProvider.OleDb:
return
new OleDbCommand();
case
DataProvider.Odbc:
return
new OdbcCommand();
case
DataProvider.Oracle:
return
new OracleCommand();
default:
return
null;
}
}
public static IDbDataAdapter
GetDataAdapter(DataProvider providerType)
{
switch
(providerType)
{
case
DataProvider.SqlServer:
return
new SqlDataAdapter();
case
DataProvider.OleDb:
return
new OleDbDataAdapter();
case DataProvider.Odbc:
return
new OdbcDataAdapter();
case
DataProvider.Oracle:
return
new OracleDataAdapter();
default:
return
null;
}
}
public static IDbTransaction GetTransaction(DataProvider providerType)
{
IDbConnection
iDbConnection = GetConnection(providerType);
IDbTransaction
iDbTransaction = iDbConnection.BeginTransaction();
return
iDbTransaction;
}
public static IDataParameter
GetParameter(DataProvider providerType)
{
IDataParameter
iDataParameter = null;
switch
(providerType)
{
case
DataProvider.SqlServer:
iDataParameter = new SqlParameter();
break;
case
DataProvider.OleDb:
iDataParameter = new OleDbParameter();
break;
case
DataProvider.Odbc:
iDataParameter = new OdbcParameter();
break;
case
DataProvider.Oracle:
iDataParameter = new OracleParameter();
break;
}
return
iDataParameter;
}
public static IDbDataParameter[]
GetParameters(DataProvider providerType, int paramsCount)
{
IDbDataParameter[]
idbParams = new IDbDataParameter[paramsCount];
switch
(providerType)
{
case
DataProvider.SqlServer:
for
(int i = 0; i < paramsCount; ++i)
{
idbParams[i] = new SqlParameter();
}
break;
case
DataProvider.OleDb:
for
(int i = 0; i < paramsCount; ++i)
{
idbParams[i] = new OleDbParameter();
}
break;
case
DataProvider.Odbc:
for
(int i = 0; i < paramsCount; ++i)
{
idbParams[i] = new OdbcParameter();
}
break;
case
DataProvider.Oracle:
for
(int i = 0; i < paramsCount; ++i)
{
idbParams[i] = new OracleParameter();
}
break;
default:
idbParams = null;
break;
}
return
idbParams;
}
}
public sealed class DBManager : IDBManager,
IDisposable
{
private
IDbConnection idbConnection;
private
IDataReader idataReader;
private
IDbCommand idbCommand;
private
DataProvider providerType;
private
IDbTransaction idbTransaction = null;
private
IDbDataParameter[] idbParameters = null;
private
string strConnection;
public
DBManager()
{
}
public
DBManager(DataProvider providerType)
{
this.providerType
= providerType;
}
public
DBManager(DataProvider providerType, string connectionString)
{
this.providerType
= providerType;
this.strConnection
= connectionString;
}
public IDbConnection Connection
{
get
{
return
idbConnection;
}
}
public IDataReader DataReader
{
get
{
return
idataReader;
}
set
{
idataReader = value;
}
}
public DataProvider ProviderType
{
get
{
return
providerType;
}
set
{
providerType = value;
}
}
public string ConnectionString
{
get
{
return
strConnection;
}
set
{
strConnection = value;
}
}
public IDbCommand Command
{
get
{
return
idbCommand;
}
}
public IDbTransaction Transaction
{
get
{
return
idbTransaction;
}
}
public IDbDataParameter[] Parameters
{
get
{
return
idbParameters;
}
}
public void Open()
{
idbConnection = DBManagerFactory.GetConnection(this.providerType);
idbConnection.ConnectionString = this.ConnectionString;
if
(idbConnection.State != ConnectionState.Open)
idbConnection.Open();
this.idbCommand
= DBManagerFactory.GetCommand(this.ProviderType);
}
public void Close()
{
if
(idbConnection.State != ConnectionState.Closed)
idbConnection.Close();
}
public void Dispose()
{
GC.SuppressFinalize(this);
this.Close();
this.idbCommand
= null;
this.idbTransaction
= null;
this.idbConnection
= null;
}
public void CreateParameters(int
paramsCount)
{
idbParameters = new IDbDataParameter[paramsCount];
idbParameters = DBManagerFactory.GetParameters(this.ProviderType,
paramsCount);
}
public void AddParameters(int
index, string paramName, object objValue)
{
if
(index < idbParameters.Length)
{
idbParameters[index].ParameterName = paramName;
idbParameters[index].Value =
objValue;
}
}
public void BeginTransaction()
{
if
(this.idbTransaction == null)
idbTransaction =
DBManagerFactory.GetTransaction(this.ProviderType);
this.idbCommand.Transaction
= idbTransaction;
}
public void CommitTransaction()
{
if
(this.idbTransaction != null)
this.idbTransaction.Commit();
idbTransaction = null;
}
public IDataReader ExecuteReader(CommandType
commandType, string commandText)
{
this.idbCommand
= DBManagerFactory.GetCommand(this.ProviderType);
idbCommand.Connection = this.Connection;
PrepareCommand(idbCommand, this.Connection, this.Transaction,
commandType,
commandText, this.Parameters);
this.DataReader
= idbCommand.ExecuteReader();
idbCommand.Parameters.Clear();
return
this.DataReader;
}
public void CloseReader()
{
if
(this.DataReader != null)
this.DataReader.Close();
}
private
void AttachParameters(IDbCommand
command, IDbDataParameter[]
commandParameters)
{
foreach
(IDbDataParameter idbParameter in commandParameters)
{
if
((idbParameter.Direction == ParameterDirection.InputOutput)
&&
(idbParameter.Value == null))
{
idbParameter.Value = DBNull.Value;
}
command.Parameters.Add(idbParameter);
}
}
private
void PrepareCommand(IDbCommand
command, IDbConnection connection, IDbTransaction transaction, CommandType commandType, string
commandText, IDbDataParameter[]
commandParameters)
{
command.Connection = connection;
command.CommandText = commandText;
command.CommandType = commandType;
if
(transaction != null)
{
command.Transaction =
transaction;
}
if
(commandParameters != null)
{
AttachParameters(command,
commandParameters);
}
}
public int ExecuteNonQuery(CommandType
commandType, string commandText)
{
this.idbCommand
= DBManagerFactory.GetCommand(this.ProviderType);
PrepareCommand(idbCommand, this.Connection, this.Transaction,
commandType, commandText, this.Parameters);
int
returnValue = idbCommand.ExecuteNonQuery();
idbCommand.Parameters.Clear();
return
returnValue;
}
public object ExecuteScalar(CommandType
commandType, string commandText)
{
this.idbCommand
= DBManagerFactory.GetCommand(this.ProviderType);
PrepareCommand(idbCommand, this.Connection, this.Transaction,
commandType,
commandText, this.Parameters);
object
returnValue = idbCommand.ExecuteScalar();
idbCommand.Parameters.Clear();
return
returnValue;
}
public DataSet ExecuteDataSet(CommandType
commandType, string commandText)
{
this.idbCommand
= DBManagerFactory.GetCommand(this.ProviderType);
PrepareCommand(idbCommand, this.Connection, this.Transaction,commandType,commandText,
this.Parameters);
IDbDataAdapter
dataAdapter = DBManagerFactory.GetDataAdapter
(this.ProviderType);
dataAdapter.SelectCommand =
idbCommand;
DataSet
dataSet = new DataSet();
dataAdapter.Fill(dataSet);
idbCommand.Parameters.Clear();
return
dataSet;
}
}
}
Now Add a Static Class
Code for Static Class
Connection
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Web;
namespace dataaccesslayer
{
public static class connection
{
public static string connectionstring()
{
return ConfigurationManager.ConnectionStrings["restaurant"].ConnectionString;
}
}
}
0 comments:
Post a Comment