以编程方式构建访问查询

Posted

技术标签:

【中文标题】以编程方式构建访问查询【英文标题】:Programmatically Build Access Query 【发布时间】:2014-04-15 19:18:34 【问题描述】:

Microsoft Office Access 数据库包含表格、查询、表单和报告。

是否可以通过 C# 在 Access 数据库中构建和保存查询?

例如,我知道我可以使用 OLEDB 连接到 Access 数据库并使用其表和已定义的查询使用 SQL 命令,但我将如何构建新查询然后将其保存在数据库中?

【问题讨论】:

我看到了多个关于如何在数据表上查询访问或显示数据的示例,但实际上并未从头开始创建查询并将其保存在访问数据库中。因此,我发布了我的问题。 我给你一个提示..看看如何使用OleDB或SqlClient库 我看到的所有使用 OleDB 或 SqlClient 库的结果只是将结果返回到数据集。我还没有看到向您展示如何将 SQL 字符串保存为访问查询的示例。 【参考方案1】:

如果您想将 Querydefinitons 添加到现有的 access 数据库中,您可以使用 Access Interop 程序集来执行此操作。

新建一个c#项目并添加对:

Microsoft Office 12.0 Access 数据库引擎对象库

(或与您的 Office/Access 版本匹配的版本)

此代码在 Access 数据库中为数据库中的每个表创建一个 Query 以查询行数:

        var dbe = new DBEngine();
        var db = dbe.OpenDatabase(@"c:\path\to\your\youraccessdatabase.accdb");

        // loop over tables
        foreach (TableDef t in db.TableDefs)
        
            // create a querydef
            var qd = new QueryDef();
            qd.Name = String.Format("Count for 0", t.Name);
            qd.SQL = String.Format("SELECT count(*) FROM 0", t.Name);

            //append the querydef (it will be parsed!)
            // might throw if sql is incorrect
            db.QueryDefs.Append(qd);
        

        db.Close();

【讨论】:

我已经快一年了,仍然享受这个解决方案

以上是关于以编程方式构建访问查询的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式检查上次通过查询访问表的时间?

从API请求数据时以编程方式获得数据访问速度

使用内置 iOS 日历以编程方式快速创建日历/访问

如何将 GraphQL 查询中的数据传递到以编程方式生成的页面上?

以编程方式构建 SQL 查询 R/Shiny/RODBC

以编程方式访问 Graphite 数据的最佳方式是啥? [关闭]