以编程方式构建访问查询

时间:2014-04-15 19:18:35

标签: c# ms-access vsto

Microsoft Office Access数据库包含表,查询,表单和报表。

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

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

1 个答案:

答案 0 :(得分:3)

如果要将Querydefinitons添加到现有的访问数据库,可以使用Access Interop asssembly来执行此操作。

创建一个新的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();