【问题标题】:Is DAO the Route To Go For Query CreationDAO 是创建查询的途径吗
【发布时间】:2015-06-11 10:25:49
【问题描述】:

这对我来说似乎有点健壮(并且需要一些时间才能完成)是否有更快的方法来使用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);

【问题讨论】:

  • 您可以使用System.Data.OdbcSystem.Data.OleDb 执行相同的SQL 查询(如果您不希望再次使用它,请不要将查询保存到QueryDefs 集合)。您是否尝试过其中任何一种选择?
  • 您创建这些查询的原因是什么?您只是尝试执行查询,还是尝试将查询添加到 .mdb 文件?
  • @JohnSaunders - 我想在访问数据库中创建和保存查询。尝试将查询添加到 .mdb 文件中。
  • @GordThompson - 我需要保存 querydef,因为我将再次使用。

标签: c# .net ms-access dao


【解决方案1】:

“更快”对您意味着什么?

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

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 毫秒。

你的要求是什么?

【讨论】:

    【解决方案2】:

    你可以执行这个CREATE VIEW Statement:

    CREATE VIEW Total_Count AS SELECT Count(*) FROM table14
    

    如果您尝试从 DAO 执行它,Access 将引发语法错误。因此,请改为从 OleDb 连接执行它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 2016-01-04
      • 2020-08-16
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      相关资源
      最近更新 更多