1

我正在为一个客户端编写一个简短的实用程序,它将在访问数据库上运行一系列查询,并将结果数据表保存到一个 excel 文件中。我无法建立与访问文件的初始连接。

访问查询的设置如下: 我正在连接的文件(我们称之为 Access1)存储了我需要运行的查询。查询的表位于单独的访问文件 (Access2) 中。当我尝试打开连接时,程序会抛出异常。

这是我的连接方法

    private static OleDbConnection GetConnection()
    {
        var connection = new OleDbConnection
        {
            ConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False", accessFilename)
        };

        connection.Open();

        return connection;
    }

我遵循了其他一些答案的建议(特别是这里),但仍然收到错误消息。

我并不完全相信问题出在代码本身,因为我能够在我们办公室大约一半的计算机上成功运行该程序。这让我认为它是驱动程序或办公版本的问题。

我的机器(不会运行该程序)正在运行 Office 2010 64 位和 64 位 Windows 7。据我所知,这是该机器上安装的唯一版本的 windows/office。

我主管的机器(将运行它)运行着完全相同版本的 office 和 windows。此外,我不必在他的机器上安装任何额外的东西来运行程序。他的机器已经出现过几次了,并且可能在某个时候有早期版本的 Office 2007 或 32 位 2010。他记不清了。

它成功运行的其他 office/windows 版本是 -Windows 7 64 位 / Office 2007 32 位 -Windows XP / Office 2007 32 位。

要添加另一个皱纹,如果我将文件名更改为任何其他访问文件,连接会在我的机器上打开而不会出现问题。当我这样做时,查询都无法运行,因为它是一个完全不同的文件,但连接打开得很好。

由于我可以成功连接到除我需要的文件之外的任何其他访问文件,我需要更改一个访问文件中的某些设置以允许外部程序连接到它吗?我认为不会,因为其他计算机可以做到这一点。

或者是否有一些驱动程序或参考或任何我忽略并需要安装才能连接到 MS Access 的东西?如果是这样,我如何能够连接到其他 Access 文件?

4

2 回答 2

4

将目标平台更改为“AnyCPU”后,它对我有用并且能够连接到 .accdb 数据库。我使用“x86”是为了让我在 64 位机器上调试期间更改代码。谢谢 DJ KRAZE!

于 2013-08-31T18:11:47.243 回答
0

你可以试试

Provider=Microsoft.Jet.OLEDB.4.0

或者

Provider=Microsoft.ACE.OLEDB.12.0

根据访问文件。这对我有用

于 2017-03-17T05:54:56.567 回答