현재 MySQL 및 MSSQL 데이터베이스를 지원하는 C# 응용 프로그램을 만들고 있습니다. 내가 겪고있는 문제는 내 포장지에 있습니다. MySQL 용으로 작업하는 코드가 있지만 여러 데이터베이스를 지원하도록 수정하는 데 문제가 있습니다.여러 데이터베이스를 지원하는 C# DB 래퍼
내 코드를 제거한 버전을 살펴보면 DBMySQL 유형의 dbConn 객체가있는 것을 볼 수 있습니다.이 객체는 MySQL 지원 만 원하는 경우에 적합합니다. dbConn = new DBMySQL (...) 및 dbConn = DBMSSQL (...)을 실행할 수 있도록 dbMySQL을 수정해야하며 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;
}
}
, 나는 이미이 모든 일을 보냈습니다으로 알려 주시기 바랍니다.
이 문제는 Factory Method 디자인 패턴을 사용하여 해결할 수 있습니다. [여기] (http://en.wikipedia.org/wiki/Factory_method_pattern) – sll