语境
我的应用程序使用一个 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 = 是我的应用程序进一步使用的正确表
这个过程没有错误地运行,也没有使用catch,但它没有触及我的数据库,它只是没有做任何事情。
我是在这里丢球还是只是错过了明显的东西,我不知道,但我浏览了很多文章,除了展示 MyAdapter.Update() 之外,似乎没有更多内容。
欢迎任何帮助。
谢谢,
凯文