我目前正在創建一個支持MySQL和MSSQL數據庫的C#應用程序。我遇到的問題是用我的包裝。我有我的代碼爲MySQL工作,但我有問題修改它以支持多個數據庫。C#DB Wrapper支持多個數據庫
如果你看看我的代碼的精簡版本,你會看到我有一個DBMySQL類型的dbConn對象,如果我只想要MySQL支持,那很好。我需要將DBMySQL修改爲通用的,以便我可以運行dbConn = new DBMySQL(...)和dbConn = DBMSSQL(...),然後我可以簡單地調用dbConn.SomeMethod()並使其在適當的數據庫上工作。我寧願儘可能保持相同的設置,因爲我的DBMySQL和DBMSSQL類中有其他的東西,用於批量插入數據庫和進行特定的錯誤檢查。
我在想/試圖聲明一些類似於Object dbConn的東西,然後操縱它,但那並沒有那麼好。然後我嘗試使用對象類型的枚舉類,但是我也遇到了問題。我知道有很多第三方庫可以完成所有這些工作,但我更願意使用自己的代碼。
有沒有人有任何建議,我可能會修改我的DBWrapper來解決這個問題?
//WRAPPER CLASS THAT CALLS DBMySQL, ISSUE IS I NOW NEED TO SUPPORT
//DBMSSQL as well, not just DBMySQL
class DBWrapper
{
DBMySQL dbConn;
public DBWrapper(...,string type)
{
if(type.Equals("MySQL")
{
dbConn = new DBMySQL(...);
}
//NEED TO REWORK TO SUPPORT THIS BELOW!!
else if(type.Equals("MSSQL")
{
//NEED TO MODIFY TO SUPPORT MSSQL
//ISSUE IS DbConn is of type DBMySQL
//SO I CANNOT GO
// DbConn = new DBMSSQL(...);
// any ideas?
}
}
public void setQuery(string myquery)
{
dbConn.setQuery(myquery);
}
}
class DBMySQL
{
public string dbinfo;
string query;
public DBMySQL(...)
{
dbinfo = ...;
}
public void setQuery(...)
{
query = myquery;
}
}
//NEED TO RE-WORK WRAPPER TO SUPPORT THIS
class DBMSSQL
{
public string dbinfo;
string query;
public DBMSSQL(...)
{
dbinfo = ...;
}
public void setQuery(...)
{
query = myquery;
}
}
在這一點上,我希望得到任何幫助可言,因此,如果您正在查看這篇文章,有一個想法,請讓我知道,我已經花了一整天在此。
這個問題可以使用工廠方法設計模式來解決,看看[這裏](http://en.wikipedia.org/wiki/Factory_method_pattern) – sll