2014-01-21 1 views
1

저는 C# 및 데이터베이스 구현에 익숙하지 않습니다. 데이터베이스에 연결할 일부 코드를 만들려고하지만 SQL Server, SQL Server CE 및 나중에 MySQL 또는 그와 비슷한 데이터베이스 유형이 다를 수 있습니다. DbConnection, DbCommand, DbDataAdapter 등 모든 클래스의 데이터베이스 클래스의 기본 클래스 인 클래스를 사용하여 코드를 구현하려고합니다. 그러나 이것을 설정하는 데 어려움을 겪고 있습니다.SQL Server와 SQL Server CE 데이터베이스를 동일한 코드로 연결하십시오.

나는 DatabaseFactory.CreateDatabase("connectionString")을 사용해 보았지만, connectionStringapp.config 파일을 넣기를 원했지만 그 방법으로 프로그램을 설치하고 싶지는 않습니다.

나는 DbProviderFactories.GetFactory(providerStr)을 시도했지만 올바른 providerStr을 얻으려면 어떤 데이터베이스를 사용하고 있는지 알아야합니다.

기본적으로 내가 사용하고있는 데이터베이스의 유형에 상관없이 코드는 여전히 작동합니다. 이 작업을 수행하는 쉬운 방법이 있습니까? 아니면 가능합니까? 어떤 도움을 주셔서 감사합니다.

+1

서버를 제어 할 수 있습니까? 이 설정에서 기본 설정은 기본 데이터 소스로 단일 서버에 연결하고 연결된 서버를 사용하여 다른 데이터 소스를 연결하는 것입니다. 연결된 서버를 통해 어디서나 데이터에 액세스 할 수 있으며 한 서버에만 연결할 수 있습니다. MySQL과 MSSQL 문법은 다르다. 이것은 MSSQL을 사용하는 경우에만 남는다. (연결된 서버를 설정 한 곳을 가정) – Twelfth

+0

나는 그것이 동일한 연결에서 그것들을 연결할 수 있다고 생각할 수있는 유일한 방법이다. –

답변

0

나는 연결할 데이터베이스 유형을 정확히 지정하지 않으면이 작업을 수행 할 수 없다는 결론에 도달했습니다. 그래서 내 대답은 데이터베이스의 다양한 유형의 열거를 추가하고 DbProviderFactories.GetFactory(providerStr)을 사용하여 DbProviderFactory 인스턴스를 생성하는 것이 었습니다. 누군가가 관심을 갖고 있거나 내가하고있는 일을하려고한다면 코드의 일부가 있습니다.

DbProviderFactory dbFactory; 

    private DatabaseTypes m_dbType; 
    public DatabaseTypes DbType 
    { 
     get { return m_dbType; } 

     set 
     { 
      m_dbType = value; 
      dbFactory = DbProviderFactories.GetFactory(DatabaseProvider.GetDatabaseProvider(m_dbType)); 
     } 
    } 

다른 파일에는 열거 형과 DatabaseProvider 클래스가 정의되어 있습니다. 그것은 다음과 같습니다

public enum DatabaseTypes 
    { 
     SQL, 
     SQL_CE 
    } 

public static class DatabaseProvider 
{ 
    private const string SQL_Provider = "System.Data.SqlClient"; 
    private const string SQL_CE_Provider = "System.Data.SqlServerCe.3.5"; 

    public static string GetDatabaseProvider(DatabaseTypes dbType) 
    { 
     switch (dbType) 
     { 
      case DatabaseTypes.SQL_CE: 
       return SQL_CE_Provider; 

      case DatabaseTypes.SQL: 
      default: 
       return SQL_Provider; 
     } 
    } 
} 

을 지금은 다른 데이터베이스 유형을 추가하려면, 난 그냥, 열거에 추가 다른 공급자 문자열을 추가 취득, 스위치 문에서 또 다른 사건을 놓을 게요! 지금해야 할 일은 쿼리를 처리하는 방법을 파악하는 것입니다.