Вместо применения логики переключения в операторе if..else .. вы должны написать отдельный слой для доступа к данным, как предлагалось в предыдущих комментариях.
Этот слой будет заниматься выбором базы данных и другими операциями.
например,
Добавьте контракт, скажем, ICommand - это будет использоваться в вашем текущем коде вместо MySQLCommand или SQLCommand.
Уровень доступа к данным будет иметь фабрику / класс и функцию, которая будет возвращать вам соответствующую команду на основе параметра.
Аналогично, все другие операции, связанные с базой данных, которые вы, возможно, выполняете в своем коде на бизнес-уровне, будут перемещены на этот новый уровень, который вы создадите, DataAccessLayer.
Отредактировано:
Спасибо @Richardissimo и @ Siegfried.V за то, что приняли это как ответ. Как и предполагалось, я поместил здесь код, чтобы вы могли принять его в качестве ответа.
public IDataReader ExecuteReader(string query)
{
IDataReader dataReader = null;
if (this.isMySQL)
{
MySqlCommand cmd = new MySqlCommand(query.Replace("[myDataBase].", ""),
connection);
dataReader = cmd.ExecuteReader();
}
else
{
SqlCommand cmd = new SqlCommand(query, connection);
dataReader = cmd.ExecuteReader();
}
return dataReader;
}