меня попросили создать кусок программного обеспечения для внутреннего использования, что позволит нам идти в ногу с запросами поддержки и т.д.класса для управления MySQL и SQL Server базы данных CE
одна из главных особенностей является программное обеспечение работает из удаленной базы данных MySQL, но если нет подключения к Интернету, он должен запускаться из локальной базы данных SQL Server CE.
В идеале программное обеспечение должно передавать только один запрос в класс менеджера баз данных, этот класс будет знать, подключен ли он к mysql, а если не использовать локальную базу данных SQL Server CE.
Я попытался это, но натолкнулся на многие блокпосты. у кого-нибудь есть решение? Моя последняя идея - передать переменную методу, который диктует тип (см. Ниже), но я не уверен, как это сделать.
public MySQLCommand run (string query, "MYSQL", <List>(MySQLParameter) mysqlparams){}
public SQLCECommand run (string query, "SQLCE", <List>(SQLCEParameter) dbparams){}
приведенный выше код будет использоваться следующим образом:
using (var sql = dbmanager.run("SELECT * FROM table", "MYSQL", mysqlparams)) {
Я также попытался следующий код, который работал, но при использовании в использовании заявления я не мог получить доступ к функции метода выполнения команды , плюс это дало мне ошибку!
public Object run(string query, List<Object> dbparams = null){
if (isMySQLConnected){
MySqlCommand sql = _MySQLConnection.CreateCommand();
sql.CommandText = query;
if (dbparams.Count > 0){
sql.Parameters.AddRange(dbparams.ToArray());
}
return sql;
} else {
SqlCeCommand sql = _OfflineConnection.CreateCommand();
sql.CommandText = query;
if (dbparams.Count > 0){
sql.Parameters.AddRange(dbparams.ToArray());
}
return sql;
}
}
Итак, в этом примере он сначала попытается подключиться SQLCE, а затем mysql?Что, если бы я хотел, чтобы это было наоборот, так что сначала он пытается mysql, и если нет соединения, тогда я могу просто изменить порядок экземпляра SQLIll или мне нужен конкретный тип возврата? – Neo
Нет, создайте объект MySQLManager и всегда используйте объект mySqlManager. mySqlManager сначала пытается подключиться, если его не удалось вызвать метод базового класса. базовый класс (SqlCEManager) выполняет запросы и возвращает результаты. –
Спасибо, что в конце концов понял, что вы имели в виду. Я соглашусь с вами, когда он примет ответ. – Neo