【问题标题】:ADO.NET way for creating a linked tableADO.NET 创建链接表的方式
【发布时间】:2011-11-19 15:46:59
【问题描述】:

我正在编写一个使用 ADO.NET OLEDB 提供程序的应用程序。数据库是Access。大多数数据库交互是通过 DDL/DML SQL 查询。

我现在需要创建链接表,而仅使用 ADO.NET 似乎没有办法做到这一点。既不是简单的 DDL 查询,也不是试图直接操作 Access 系统表。

我试图避免使用 ADOX,因为我的应用程序中有额外的引用/依赖项。有谁知道解决这个问题的方法?非常感谢。

这是我目前使用 ADOX 创建链接表的方法。

using ADOX;

public static void CreateLinkedTable(string sourceDB, string sourceTable, string targetDB, string targetTable)
{
   Catalog cat = new Catalog();
   cat.let_ActiveConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + targetDB);
   Table table = new Table();
   table.Name = targetTable;
   table.let_ParentCatalog(cat);
   table.Properties["Jet OLEDB:Create Link"].Value = true;
   table.Properties["Jet OLEDB:Link Datasource"].Value = sourceDB;
   table.Properties["Jet OLEDB:Remote Table Name"].Value = sourceTable;
   cat.Tables.Append(table);
}

【问题讨论】:

  • 如果你能理解完成任务所需的全部且唯一的 SQL 代码,你可以通过 ADO.NET 执行这样的 SQL 命令,如果没有,我怀疑你可以避免 ADOX。

标签: c# ado.net jet adox


【解决方案1】:

没有办法绕过额外的依赖。链接表是 MS ACCESS 的一个属性特性,而 ADO.NET 不知道如何执行您想要它执行的操作。 Access 必须通过它接受的 SQL 命令来公开这一点,但它不会,它通过 VBA 公开到一定程度。因此,您可以从 Access DB 内部控制它,但不能从外部控制它——通过 ADO.NET 连接,您所能做的就是发出它知道如何解释的 SQL 语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多