為支援多資料庫,框架定義 IDataProvider,各資料庫類別(SqlServer、Oracle、OleDb)繼承 DataHelper 並實作此介面,集中建立連線、命令、參數、適配器等物件,避免重複撰寫 CRUD 邏輯。
public class SqlServer : DataHelper, IDataProvider
{
#region IDataProvider 實作
public IDbConnection GetDbConnection()
{
var conn = new SqlConnection(ConnectionString);
conn.StateChange += new StateChangeEventHandler(base.OnStateChange);
return conn;
}
public IDbDataAdapter GetDataAdapter() => new SqlDataAdapter();
public IDataParameter GetParameter() => new SqlParameter();
public IDataParameter[] GetParameters(int Count) => new SqlParameter[Count];
public IDbCommand GetCommand(IDbCommand command) => command as SqlCommand;
public void GetCommandBuilder(IDbDataAdapter DataAdapter, DataTable DataTable, DataViewRowState dataViewRowState)
{
var adapter = (SqlDataAdapter)DataAdapter;
new SqlCommandBuilder(adapter);
}
#endregion
}
Oracle、OleDb 同理實作對應的 OracleConnection、OleDbConnection 等,上層邏輯完全解耦具體資料庫。