将 SQL 数据集保存到本地 MDB 文件

本文关键字:MDB 文件 SQL 数据集 保存 | 更新日期: 2023-09-27 18:35:41

>上下文

我的应用程序使用 SQL 数据库,它在应用程序启动时从中读取数据表。如果应用程序无法连接到 SQL DB,则我有一个本地 Ms Access 。MDB 文件。我有一个单独的线程来检查本地数据库是否已过时。

我有一个从SQL连接中获得的数据表 -> 已验证并正常工作我可以在本地连接到我的 Access 数据库并从中读取 --> 已验证并正常工作

问题

/问题

我正在尝试通过使用从SQL连接获得的数据表更新本地数据库来更新本地数据库。

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;保留安全信息 = 真;JET OLEDB:Database Password=MyPassword;"
  • MyTable = 是正确的表,我的应用程序也进一步使用它

这个过程运行没有错误,也没有使用catch,但它没有触及我的数据库,它只是没有做任何事情。

我在这里丢球还是只是错过了显而易见的,我不知道,但我浏览了很多文章,除了显示 MyAdapter.Update(),似乎没有更多

欢迎任何帮助。

谢谢

凯文

将 SQL 数据集保存到本地 MDB 文件

您的备份数据库是否必须处于可访问状态? 因为如果您使用 SQL Compact Edition,在两者之间复制会容易得多?

是的,这意味着将其与安装程序连接,或者只是确保所有客户端计算机都预装了它,但是它是免费的。

如果这是一个问题,那么您需要做的就是(我认为,不是自己做的)将转到您的安装程序项目属性,单击先决条件,然后勾选 SQL compact 以便在您的应用程序可以使用之前安装它,iv 之前在其他框架中完成此操作,它只是弹出一个带有安装盾牌的框,询问他们是否要下载必要的软件,只需单击一下,然后应该为他们完成。

您是否还需要帮助使用紧凑型数据库?

顺便说一下,一个缺点是它确实缺少一些高端功能,但不会影响平均数据库工作。

编辑

如果您将使用 SQL CE,

则可以通过单击数据和新数据源,然后按照以下步骤确保在询问时输入 SQL CE 来轻松制作

VS 中的数据库

如果它有效,你最终会得到一个.sdf数据库

我提供了一个代码片段,解决了我在这里的相关问题:将SQL数据库导出到WinForm DataSet,然后使用DataSet导出到MDB数据库