2010-01-06 6 views
3

시스템을위한 간단한 데이터베이스 프로세서를 개발 중이지만 2 개의 데이터베이스, PostgreSQL 및 Oracle (XXg)을 지원해야합니다..NET의 불가지론적인 연결 처리기

예는 IDataReader에, IDbConnection을 같이 만 System.Data 인터페이스를 사용하여 이러한 두 개의 데이터베이스를 처리하는 클래스를 구축 할 수 있다면 궁금

... bunch of properties, constructors and fields 

private String BuildConnectionString(); 

public Int32 ExecuteNonQuery(NpgsqlCommand sqlCommand); 

public NpgsqlDataReader ExecuteQueryReader(NpgsqlCommand sqlCommand); 

public Object ExecuteScalar(NpgsqlCommand sqlCommand); 

(이미 pgSQL의 근무) 같은 것 , 등등. 나는 그것이라고 생각하지만, 내가 인스턴스 연결이 필요할 때 좀 붙어 있습니다. 예 :

이들은 간단한 데이터베이스 요청입니다이 작업을 수행하는 빠른 방법이 있나요

public AgnosticConnectionHandler(String userName, String password, 
       String database, String server, Int32 port) 
    { 
     this._userName = userName; 
     this._password = password; 
     this._database = database; 
     this._server = server; 
     this._port = port; 

     this._connection = ???? 
    } 

: 다른 경우

public PgSqlConnectionHandler(String username, String password, 
       String database, String server, Int32 port) 
    { 
     this._username = username; 
     this._password = password; 
     this._database = database; 

     this._server = server; 
     this._port = port; 

     this._connection = new NpgsqlConnection(BuildConnectionString()); 
    } 

, 난 _connection이 (IDbConnection을) 대해서 typeof입니다 (것 나는 아무것도 좋아할 필요가 없다. 작은 시스템이다.

답변

2

데이터베이스 패턴을 사용하여 데이터베이스 연결을 만듭니다.

즉, 어떤 유형인지와 관련된 모든 정보를 지정하고 인터페이스 (IDbConnection)를 리턴하는 연결을 작성하는 정적 메소드가 있습니다 (그러나 올바르게 구조화되어 있음).

이 메서드의 핵심은 Oracle 또는 Postgre 연결을 반환하는 if 문일 가능성이 큽니다.

+0

고맙습니다. 도와 주신 모든 분들께 감사드립니다.) –

2

IDbConnection 인터페이스를 사용하고 구체적인 클래스를 생성하는 팩토리를 만들 수 있습니다. 그런 다음 인터페이스에서 IDbCommand를 만들고 적절한 매개 변수를 첨부하고 실행하여 DataReaders 또는 DataSets을 가져올 수 있습니다. 나는 전에 큰 효과를 냈다.

2

두 데이터베이스 모두 OLEDB 공급자가 있으므로 OleDb 데이터 공급자를 사용할 수도 있습니다. 그렇지 않다면 항상 좋거나 나쁘게 ODBC이됩니다.

alt text http://i.msdn.microsoft.com/Ee817654.f01daag02(en-us,PandP.10).gif

+0

이것은 내가 실제로 여기에서 겪고있는 대부분의 문제를 실제로 단순화하기 때문에 흥미 롭습니다. 감사합니다. 고마워요. –