環境
私のアプリケーションは、アプリケーションの開始時にデータテーブルを読み取る SQL データベースを使用しています。アプリケーションが SQL DB に接続できない場合は、ローカルの Ms Access .MDB ファイルを使用します。ローカル データベースが古いかどうかを確認する別のスレッドがあります。
SQL 接続から取得した DataTable があります --> 検証済みで動作しています Access データベースにローカルに接続してそこから読み取ることができます --> 検証済みで動作しています
問題/質問
SQL 接続から取得した DataTable を使用してローカル データベースを更新しようとしています。
public static void UpdateLocalDatabase(string strTableName, OleDbConnection MyConnection, DataTable MyTable)
{
try
{
if (CreateDatabaseConnection() != null)
{
string strQuery = "SELECT * FROM " + strTableName;
OleDbDataAdapter MyAdapter = new OleDbDataAdapter();
OleDbCommandBuilder MyCommandBuilder = new OleDbCommandBuilder(MyAdapter);
MyAdapter.SelectCommand = new OleDbCommand(strQuery, odcConnection);
MyAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand();
MyConn.Open();
MyAdapter.Update(MyTable);
MyConn.Close();
}
}
catch { }
}
このスニペットをデバッグすると、すべての変数が本来あるべきものになります。
- strTableName = テーブルの正しい名前
- MyConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyLocation;Persist Security Info=True;JET OLEDB:Database Password=MyPassword;"
- MyTable = は、アプリケーションによってさらに使用される正しいテーブルです
このプロセスは、エラーもキャッチも使用せずに実行されますが、データベースには影響しません。何もしません。
ここにボールを落としたのか、それとも明らかなものを見逃しただけなのか、わかりませんが、MyAdapter.Update() を表示するために多くの記事を閲覧しましたが、それ以上のことはないようです。
どんな助けでも大歓迎です。
ありがとう、
ケビン