要するに、私は自分で書いているいくつかのソフトウェアのデータベース統合を処理するクラスハンドラーを書いていますが、リモートデータベースへの接続が常にあるとは限らないため、SQLCEを使用してローカルデータベースバッファーを作成すると思いました。変更を同期することができます。
これまでのところ、パラメータを除いて順調に進んでいます。私が呼び出しようとしている関数を以下に示しますが、この関数は無効な引数について文句を言っています。
public Object run(string query, List<Object> dbparams = null)
{
if (MyDB.isConnected())
{
return MyDB.run(query, dbparams);
}
else
{
SqlCeCommand sql = _OfflineConnection.CreateCommand();
sql.CommandText = query;
if (dbparams.Count > 0)
{
sql.Parameters.AddRange(dbparams.ToArray());
}
return sql;
}
}
MyDB.runは、mysqlを除いてelseステートメントとまったく同じコードです。mydbクラスはdbparamsリストがmysqlparametersであることを期待しているため、うめき声を上げている行はreturnmydb.runです。
誰かが私がこれを達成する方法を知っていますか?LINQを使用して変換を実行しようとしましたが、失敗しました。
編集
現在、私は次のように働いていますが、よりクリーンな解決策があると確信しています
public Object run(string query, List<Object> dbparams = null)
{
if (MyDB.isConnected())
{
List<MySqlParameter> mydbparams = null;
for (int i = 0; i < dbparams.Count; i++)
{
mydbparams.Add((MySqlParameter)dbparams[i]);
}
return MyDB.run(query, mydbparams);
}
else
{
SqlCeCommand sql = _OfflineConnection.CreateCommand();
sql.CommandText = query;
if (dbparams.Count > 0)
{
sql.Parameters.AddRange(dbparams.ToArray());
}
return sql;
}
}