通过Interop运行访问查询?

时间:2014-09-09 15:48:06

标签: c# ms-access com interop

我在几个*.mdb文件中有一些MS-Access查询。它们非常复杂 所以我只想打开一个文件,运行它包含的特定查询并返回结果表 我该怎么做?

(我知道我们可以通过连接字符串等进行连接,但我想以这种方式进行探索。)

<小时/> 我的示例代码(已编辑以禁用安全警报):

using Microsoft.Office.Interop.Access;
using Microsoft.Office.Core;

var app = new Application();
app.OpenCurrentDatabase(@"C:\test.mdb", true);
app.AutomationSecurity = MsoAutomationSecurity.msoAutomationSecurityLow;
app.Visible = false;
// run query
app.Quit();

示例查询:

select date(), date()-1

1 个答案:

答案 0 :(得分:3)

从Microsoft Access应用程序的实例中运行查询(例如,运行使用自定义VBA函数的查询以及可能无法从直接System.Data.OleDb或System.Data.Odbc查询中获得的其他功能你可以做这样的事情:

var accApp = new Microsoft.Office.Interop.Access.Application();
accApp.OpenCurrentDatabase(@"C:\Users\Public\Database1.accdb");
Microsoft.Office.Interop.Access.Dao.Database cdb = accApp.CurrentDb();

Microsoft.Office.Interop.Access.Dao.Recordset rst = 
        cdb.OpenRecordset(
            "SELECT FullName FROM ClientQuery", 
            Microsoft.Office.Interop.Access.Dao.RecordsetTypeEnum.dbOpenSnapshot);
while (!rst.EOF)
{
    Console.WriteLine(rst.Fields["FullName"].Value);
    rst.MoveNext();
}
rst.Close();
accApp.CloseCurrentDatabase();
accApp.Quit();