Я разрабатываю простой процессор базы данных для системы, но мне нужно поддерживать 2 базы данных, PostgreSQL и Oracle (XXg);
Пример будет такой (уже работает для pgsql)
... bunch of properties, constructors and fields
private String BuildConnectionString();
public Int32 ExecuteNonQuery(NpgsqlCommand sqlCommand);
public NpgsqlDataReader ExecuteQueryReader(NpgsqlCommand sqlCommand);
public Object ExecuteScalar(NpgsqlCommand sqlCommand);
Мне было интересно, возможно ли создать класс для обработки этих двух баз данных, используя только интерфейсы System.Data, такие как IDataReader, IDbConnection и т. Д. Я думаю, что это так, но я немного застрял, когда мне нужно создать экземпляр подключение. Пример:
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 is typeof (IDbConnection):
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 = ????
}
Есть ли быстрый способ сделать это?
Это простые запросы к базе данных, мне не нужно ничего особенного, это маленькая система.
Спасибо за внимание!