2014-11-07 3 views
0

사용자가 설치했을 수도있는 모든 유형의 DBMS를 사용할 수있는 C# 응용 프로그램을 개발 중입니다. MySql, MsSql, Sqlite 등과 같은 모든 데이터베이스와 상호 작용할 수있는 라이브러리 또는 창 API가 있는지 궁금합니다.다른 유형의 dbms와 상호 작용하는 C# 응용

+0

책, 도구, 소프트웨어 라이브러리, 자습서 또는 기타 오프 사이트 리소스를 추천하거나 찾도록 요청하는 질문은 스택 오버플로에 대한 주제와 관련이 없습니다. –

+0

오해해서 미안하지만 모든 유형의 데이터베이스와 상호 작용하는 방법을 의미했습니다 – Vondella21

+0

_ "모든 유형의 DBMS .."- 너무 광범위 할 수도 있음 ** 요구 사항 – MickyD

답변

0

SqlConnection 대신 IDbConnection과 같이 구체적인 클래스 대신 인터페이스를 사용할 수 있습니다. 그런 다음 구체적인 유형 (예 : IDataReader 또는 IDbCommand)을 사용하여 인터페이스를 반환하는 클래스가 필요합니다. 예를 들어

:

public class DB 
{ 
    public enum Provider { 
     SqlServer, MySql, Oracle//, ... 
    } 

    public DB() 
    { 
     this.CurrentProvider = Properties.Settings.Default.Provider; // presuming that you have this setting 
    } 

    public Provider CurrentProvider { get; set; } 

    public IDbConnection NewConnection() 
    { 
     switch (this.CurrentProvider) { 
      case Provider.SqlServer: 
       return new SqlConnection(Properties.Settings.Default.ConnectionString); 
      case Provider.MySql: 
       return new MySql.Data.MySqlClient.MySqlConnection(Properties.Settings.Default.ConnectionString); 
       // ... 
      default: throw new NotSupportedException(CurrentProvider.ToString()); 
     } 
    } 

    // and other methods .... 
} 

이 길에는이 클래스는 현재 DBMS를 알 필요가있다. 물론 표준 SQL을 사용해야하고 Row_Number과 같은 데이터베이스 특정 메서드를 사용할 수 없습니다.

관련 문제