以编程方式构建访问查询

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

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

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

如果要将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();