使用 C# 以编程方式更新 MS Access 数据库中的链接表

2023-12-25

我有两个 Access 2003 数据库(fooDb and barDb)。里面有四张桌子fooDb链接到表中的barDb.

两个问题:

  • 如何更新表内容(链接表在fooDb应与表中的内容同步barDb)
  • 如何将表重新链接到不同的表barDb using ADO.NET

我用谷歌搜索但没有得到任何有用的结果。我发现如何在 VB(6) 和 DAO 中完成此任务,但我需要 C# 的解决方案。


这是我使用 C# 重新链接 DAO 表的解决方案。

我的应用程序使用一个中央 MS Access 数据库和 8 个链接的实际数据库。 中央数据库存储在我的 C# 应用程序本地,但该应用程序允许 8 个数据数据库位于其他位置。启动时,我的 C# 应用程序根据 app.config 设置重新链接中央数据库中的 DAO 表。

顺便说一句,这个数据库结构是我的应用程序最初是 MS Access 应用程序的结果,我将其移植到 VB6。我目前正在将我的应用程序转换为 C#。我本可以放弃 VB6 或 C# 中的 MS Access,但它是一个非常易于使用的桌面数据库解决方案。

在中央数据库中,我创建了一个名为 linkedtables 的表,其中包含三列 TableName、LinkedTableName 和 DatabaseName。

在应用程序启动时,我将此例程称为

            Common.RelinkDAOTables(Properties.Settings.Default.DRC_Data
                              , Properties.Settings.Default.DRC_LinkedTables
                              , "SELECT * FROM LinkedTables");

Default.DRC_Data - 中央访问数据库的当前文件夹 Default.DRC_LinkedTables - 8 个数据数据库的当前文件夹

以下代码在 C# 中实际重新链接 DAO 表

        public static void RelinkDAOTables(string MDBfile, string filepath, string sql)
    {
        DataTable linkedTables = TableFromMDB(MDBfile, sql);

        dao.DBEngine DBE = new dao.DBEngine();
        dao.Database DB = DBE.OpenDatabase(MDBfile, false, false, "");
        foreach (DataRow row in linkedTables.Rows)
        {
            dao.TableDef table = DB.TableDefs[row["Name"].ToString()];
            table.Connect = string.Format(";DATABASE={0}{1} ;TABLE={2}", filepath, row["database"], row["LinkedName"]);
            table.RefreshLink();
        }


    }

编写用于从 Access 数据库获取数据并将其作为 DataTable 返回的附加代码

        public static DataTable TableFromOleDB(string Connectstring, string Sql)
    {
        try
        {
            OleDbConnection conn = new OleDbConnection(Connectstring);
            conn.Open();
            OleDbCommand cmd = new OleDbCommand(Sql, conn);
            OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
            DataTable table = new DataTable();
            adapter.Fill(table);

            return table;
        }
        catch (OleDbException)
        {
            return null;
        }
    }
    public static DataTable TableFromMDB(string MDBfile, string Sql)
    {
        return TableFromOleDB(string.Format(sConnectionString, MDBfile), Sql);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 以编程方式更新 MS Access 数据库中的链接表 的相关文章

  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • VB.NET 中的静态方法实现

    我很困惑Static在 VB NET 中的实现 在 C 中 我们可以创建静态类和静态方法来为我们的应用程序编写实用方法 现在 VB NET 让我们创建Module代替静态类 如果我们在模块中创建一个方法 默认情况下它会变成静态的 但在我的应
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • Pygame:帧重影?

    我正在使用 pygame 在 python 中开发动画环境 用户绘制每一帧 然后使用 ffmpeg 将动画保存为 avi 电影 我想实现一个功能 但不知道如何 帧重影 就像在绘制当前帧时显示前一帧一样 我尝试创建一个名为ghost当按下下一
  • NSTextView 选择特定行

    我使用的是 Xcode 10 Objective C macOS 而不是 iOS 是否可以以编程方式选择一行NSTextView如果给出行号 无需更改内容的任何属性 只需像用户通过三次单击一样选择它即可 我知道如何按范围获取选定的文本 但这
  • C++ 内存模型和 char 数组上的竞争条件

    基本上我很难理解这一点 来自 Bjarne FAQ 然而 大多数现代处理器无法读取或写入单个 字符 它必须读取或写入整个单词 因此分配给 c 实际上是 读取包含c的单词 替换c部分 然后写 单词又回来了 由于对 b 的赋值类似 因此有 两个
  • 有什么办法可以阻止用户在本地保存文档吗?

    如果用户在我的网站上查看文档 例如代表某些机密信息的 pdf 文件 我是否可以阻止他们在本地保存文档 一句话 不 一旦您将数据发送到他们的浏览器 他们就可以用它做他们想做的事情 您可以使用一些 Flash 组件或 Java Applet 来
  • 如何使用jdbc从db2读取xml列

    假设我在 DB2 中有一个名为 ABC 的表 其中有 2 列 id number content xml String q select from ABC where id 121 Connection conn getConnection
  • 在Android的不同模块中使用不同版本的SO文件(如libc++_shared.so)

    我在应用程序的两个单独的模块中使用两个不同的自定义 aar 库 库附带了许多 so 文件 例如 libc shared so 等 在包含这两个文件后 我收到如下错误 2 files found with path lib arm64 v8a
  • 从另一个 PHP 脚本执行 PHP 脚本

    如何使用 php 手动触发服务器来运行 php 脚本 基本上我有一个相当大的 cronjob 文件 每 2 小时运行一次 但我希望能够自己手动触发该文件 而不必等待它加载 我希望它在服务器端完成 编辑 我想从 php 文件执行该文件 而不是
  • for..of 和迭代器状态

    考虑这个Python代码 it iter 1 2 3 4 5 for x in it print x if x 3 break print for x in it print x 它打印1 2 3 4 5 因为迭代器it记住它在循环中的状态
  • 如何将 JDBC 连接到 tns oracle

    我可以使用 tns 文件从 plsql 连接到数据库 现在我想使用 JDBC 从 Java 连接到数据库 我尝试过的 我搜索谷歌 发现我必须使用这个连接字符串 jdbc oracle thin host port tnsfile 我的计算机
  • Eclipse 中保存文件的选项呈灰色

    I m using Eclipse 3 7 on Ubuntu Often after editing a file I cannot save it the save option is greyed out in the menu an
  • 在 python 中列出带有标题的 csv [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我编写了一个脚本 其中给出了如下所示的列表作为输出 red 361 0 blue 1 0 orange 77 0 cream 66
  • 导入样式表中的 XSLT 样式表参数

    是否可以为导入的样式表的参数赋值 我期待类似的事情
  • 如何使用 Perl 且仅使用 LWP::UserAgent 更新我的 Twitter 状态?

    我正在尝试通过 Twitter API 和 OAuth 更新我的状态 我陷入了最后一步 即状态更新 这是我的代码 标题 ua gt default header Content Type gt application x www form
  • 堆叠两个 pandas 数据框

    如何堆叠以下 2 个数据框 df1 hzdept r hzdepb r sandtotal r 0 0 114 0 1 114 152 92 1 df2 hzdept r hzdepb r sandtotal r 0 0 23 83 5 1
  • pandas 中按列随机排列行

    我有以下数据框示例 c1 c2 0 1 a 1 2 b 2 3 c 3 4 d 4 5 e 给定一个模板c1 3 2 5 4 1 我想根据新的列顺序更改行的顺序c1 所以它看起来像 c1 c2 0 3 c 1 2 b 2 5 e 3 4 d
  • 如何判断文件是否已完成 FTP 传输?

    我们有一个 C Windows 服务轮询一个文件夹 等待 FTP 文件被发布 为了避免在文件仍在写入时使用该文件 我们首先尝试锁定该文件 但是 似乎有有时我们会在创建 FTP 文件之后但在写入文件之前锁定文件 因此我们最终会打开一个空文件
  • 在 GEKKO 中使用非线性模型预测控制实现横向控制器

    我正在尝试为由横向动态模型定义的自动驾驶车辆实现横向控制器 好吧 我的问题是 CV 没有达到 SP 设置的所需参考点或目标点 我正在使用以下运动方程和目标函数 我正在使用半经验公式 pacejka 来计算 Fyf Fyr 提供的轮胎力 这里
  • 对于 DataGridView,如何获取每一行的值?

    我想知道迭代 datagridview 中的所有行并从单元格中获取值的最佳方法是什么 这是我想做的 但我不太喜欢它 因为如果我重新排列列 那么代码也必须更改 for int i 0 i lt dataGridView RowCount i
  • C# EF 5 Code First 中多对多关系的 Lambda 表达式

    我正在使用 EF 5 Code First 和 VS 2012 我有文章和标签课程 每一篇文章都会有至少一个关联的标签 请参阅下面的课程 public class Article public int ArticleId get set p
  • 使用 C# 以编程方式更新 MS Access 数据库中的链接表

    我有两个 Access 2003 数据库 fooDb and barDb 里面有四张桌子fooDb链接到表中的barDb 两个问题 如何更新表内容 链接表在fooDb应与表中的内容同步barDb 如何将表重新链接到不同的表barDb usi