DAO 是创建查询的途径吗

Is DAO the Route To Go For Query Creation

这对我来说似乎有点鲁棒(并且需要一些时间才能完成)是否有更快的方法来使用 C# 创建访问查询?这是我一直在使用的代码:

DAO.Database dd;
DAO.DBEngine db = new DAO.DBEngine();
var qd8 = new DAO.QueryDef();
String queryName = String.Format("SELECT Count(*) from table14");
string path = @"E:\Databases\database123.mdb";
dd = db.OpenDatabase(path);
qd8.Name = String.Format("Total_Count");
qd8.SQL = String.Format(queryName);
dd.QueryDefs.Append(qd8);

你可以执行这个 CREATE VIEW Statement:

CREATE VIEW Total_Count AS SELECT Count(*) FROM table14

如果您尝试从 DAO 执行它,Access 将抛出语法错误。所以改为从 OleDb 连接执行它。

但是,我不确定这种方法是否会明显快于您当前的代码。

"faster" 对您来说意味着什么?

我在我的测试数据库中运行这个:

DAO.DBEngine de = new DAO.DBEngine();
DAO.Database dd;
DAO.QueryDef qd8 = new DAO.QueryDef();
string path = @"c:\test\testdb.mdb";
string queryName = @"TotalCountX";
string querySql = @"Select Count(*) From TableOne";

dd = de.OpenDatabase(path);
qd8.Name = queryName;
qd8.SQL = querySql;
dd.QueryDefs.Append(qd8);

执行时间为 85 毫秒。

添加两个查询:

DAO.DBEngine de = new DAO.DBEngine();
DAO.Database dd;
DAO.QueryDef qd8 = new DAO.QueryDef();
string path = @"c:\test\testdb.mdb";
string queryName = @"TotalCountY";
string querySql = @"Select Count(*) From TableOne";

dd = de.OpenDatabase(path);
qd8.Name = queryName;
qd8.SQL = querySql;
dd.QueryDefs.Append(qd8);

qd8 = new DAO.QueryDef();
queryName = @"TotalCountZ";
querySql = @"Select Count(*) From TableTwo";
qd8.Name = queryName;
qd8.SQL = querySql;
dd.QueryDefs.Append(qd8);

执行时间为 89 毫秒,因此添加一个查询大约需要 4 毫秒。

您的要求是什么?