我被要求创建一个供内部使用的软件,这将使我们能够及时了解支持请求等。
主要功能之一是该软件可从远程 MySQL 数据库运行,但如果没有 Internet 连接,则应从本地 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)) {
我还尝试了以下代码,该代码有效,但是在 using 语句中使用时,我无法访问该命令的方法函数,而且它给了我一个错误!
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;
}
}