用C#實現的數據庫抽象工廠(二)

用C#實現的數據庫抽象工廠(二)

以下3個類分別是Factory針對SqlServer專用連接、OleDb連接和Odbc連接時的具體實現:

(3)SqlFactory.cs

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace DbService
{
/// <summary>
/// 針對SqlServer專用連接的工廠
/// </summary>
public class SqlFactory : AbstractDbFactory
{
/// <summary>
/// 構造函數
/// </summary>
public SqlFactory()
{
}

/// <summary>
/// 建立默認Connection對象
/// </summary>
/// <returns>Connection對象</returns>
public IDbConnection CreateConnection()
{
return new SqlConnection();
}

/// <summary>
/// 根據連接字符串建立Connection對象
/// </summary>
/// <param name="strConn">連接字符串</param>
/// <returns>Connection對象</returns>
public IDbConnection CreateConnection(string strConn)
{
return new SqlConnection(strConn);
}

/// <summary>
/// 建立Command對象
/// </summary>
/// <returns>Command對象</returns>
public IDbCommand CreateCommand()
{
return new SqlCommand();
}

/// <summary>
/// 建立DataAdapter對象
/// </summary>
/// <returns>DataAdapter對象</returns>
public IDbDataAdapter CreateDataAdapter()
{
return new SqlDataAdapter();
}

/// <summary>
/// 根據Connection建立Transaction
/// </summary>
/// <param name="myDbConnection">Connection對象</param>
/// <returns>Transaction對象</returns>
public IDbTransaction CreateTransaction(IDbConnection myDbConnection)
{
return myDbConnection.BeginTransaction();
}

/// <summary>
/// 根據Command建立DataReader
/// </summary>
/// <param name="myDbCommand">Command對象</param>
/// <returns>DataReader對象</returns>
public IDataReader CreateDataReader(IDbCommand myDbCommand)
{
return myDbCommand.ExecuteReader();
}

/// <summary>
/// 獲得連接字符串
/// </summary>
/// <returns>連接字符串</returns>
public string GetConnectionString()
{
string strServer = ConfigurationSettings.AppSettings["SqlServerServer"];
string strDatabase = ConfigurationSettings.AppSettings["SqlServerDatabase"];
string strUid = ConfigurationSettings.AppSettings["SqlServerUid"];
string strPwd = ConfigurationSettings.AppSettings["SqlServerPwd"];
string strConnectionString = "Server = " + strServer + "; Database = " + strDatabase + "; Uid = " + strUid + "; Pwd = " + strPwd + ";";
return strConnectionString;
}

}
}


(4)OleDbFactory.cs

using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;

namespace DbService
{
/// <summary>
/// 針對OleDb連接的工廠
/// </summary>
public class OleDbFactory : AbstractDbFactory
{
/// <summary>
/// 構造函數
/// </summary>
public OleDbFactory()
{
}

/// <summary>
/// 建立默認Connection對象
/// </summary>
/// <returns>Connection對象</returns>
public IDbConnection CreateConnection()
{
return new OleDbConnection();
}

/// <summary>
/// 根據連接字符串建立Connection對象
/// </summary>
/// <param name="strConn">連接字符串</param>
/// <returns>Connection對象</returns>
public IDbConnection CreateConnection(string strConn)
{
return new OleDbConnection(strConn);
}

/// <summary>
/// 建立Command對象
/// </summary>
/// <returns>Command對象</returns>
public IDbCommand CreateCommand()
{
return new OleDbCommand();
}

/// <summary>
/// 建立DataAdapter對象
/// </summary>
/// <returns>DataAdapter對象</returns>
public IDbDataAdapter CreateDataAdapter()
{
return new OleDbDataAdapter();
}

/// <summary>
/// 根據Connection建立Transaction
/// </summary>
/// <param name="myDbConnection">Connection對象</param>
/// <returns>Transaction對象</returns>
public IDbTransaction CreateTransaction(IDbConnection myDbConnection)
{
return myDbConnection.BeginTransaction();
}

/// <summary>
/// 根據Command建立DataReader
/// </summary>
/// <param name="myDbCommand">Command對象</param>
/// <returns>DataReader對象</returns>
public IDataReader CreateDataReader(IDbCommand myDbCommand)
{
return myDbCommand.ExecuteReader();
}

/// <summary>
/// 獲得連接字符串
/// </summary>
/// <returns>連接字符串</returns>
public string GetConnectionString()
{
string strProvider = ConfigurationSettings.AppSettings["OleDbProvider"];
string strDataSource = ConfigurationSettings.AppSettings["OleDbDataSource"];
string strConnectionString = "Provider = " + strProvider + ";Data Source = " + strDataSource + ";";
return strConnectionString;
}

}
}


(5)OdbcFactory.cs

using System;
using System.Data;
using System.Data.Odbc;
using System.Configuration;

namespace DbService
{
/// <summary>
/// 針對Odbc連接的工廠
/// </summary>
public class OdbcFactory : AbstractDbFactory
{
/// <summary>
/// 構造函數
/// </summary>
public OdbcFactory()
{
}

/// <summary>
/// 建立默認Connection對象
/// </summary>
/// <returns>Connection對象</returns>
public IDbConnection CreateConnection()
{
return new OdbcConnection();
}

/// <summary>
/// 根據連接字符串建立Connection對象
/// </summary>
/// <param name="strConn">連接字符串</param>
/// <returns>Connection對象</returns>
public IDbConnection CreateConnection(string strConn)
{
return new OdbcConnection(strConn);
}

/// <summary>
/// 建立Command對象
/// </summary>
/// <returns>Command對象</returns>
public IDbCommand CreateCommand()
{
return new OdbcCommand();
}

/// <summary>
/// 建立DataAdapter對象
/// </summary>
/// <returns>DataAdapter對象</returns>
public IDbDataAdapter CreateDataAdapter()
{
return new OdbcDataAdapter();
}

/// <summary>
/// 根據Connection建立Transaction
/// </summary>
/// <param name="myDbConnection">Connection對象</param>
/// <returns>Transaction對象</returns>
public IDbTransaction CreateTransaction(IDbConnection myDbConnection)
{
return myDbConnection.BeginTransaction();
}

/// <summary>
/// 根據Command建立DataReader
/// </summary>
/// <param name="myDbCommand">Command對象</param>
/// <returns>DataReader對象</returns>
public IDataReader CreateDataReader(IDbCommand myDbCommand)
{
return myDbCommand.ExecuteReader();
}

/// <summary>
/// 獲得連接字符串
/// </summary>
/// <returns></returns>
public string GetConnectionString()
{
string strDriver = ConfigurationSettings.AppSettings["OdbcDriver"];
string strDBQ = ConfigurationSettings.AppSettings["OdbcDBQ"];
string strConnectionString = "Driver={" + strDriver + "}; DBQ=" + strDBQ + ";";
return strConnectionString;
}

}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章