连接Access数据库(accdb)的OLEDB连接。

14

我想制作一个简单的应用程序来练手,所以连接到像Access (.accdb)这样简单的数据库会很好。

我的程序长这样:

using System;
using System.Collections.Generic; 
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Web;

namespace myProject.Account
{
    public class DbManager
    {
       private OleDbConnection _dbConnection;

       public void OpenDbConnection()
       {
        _dbConnection = new OleDbConnection {ConnectionString = GetConnectionString()};
       }

       private string GetConnectionString()
       {
        return "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=exercise1.accdb";
       }

       public void CloseDbConnection()
       {
        _dbConnection.Close();
       }

       public void GetUser()
       {
        DataSet myDataSet = new DataSet();
        var myAdapptor = new OleDbDataAdapter();
        OleDbCommand command = new OleDbCommand("SELECT * FROM tblUser", _dbConnection);
        myAdapptor.SelectCommand = command;
        myAdapptor.Fill(myDataSet, "tblUser");
       } 

    }
  }

我使用Visual Studio 2010。当我使用内置调试模式“启动而不调试”(CTRL+F5)测试我的应用程序时,会出现以下错误:

本地计算机上未注册'Microsoft.ACE.OLEDB.14.0'提供程序。

我尝试从Microsoft官网下载和安装“Microsoft Access Database Engine 2010 Redistributable”(64位): http://www.microsoft.com/download/en/details.aspx?id=13255

不幸的是,这并没有解决问题。当执行myAdapptor.Fill()时,仍然会出现错误。出了什么问题?


你的操作系统是几位元?如果操作系统是32位元,64位元将无法运行,反之亦然,并且它们不能并存安装。 - MatthewMartin
4个回答

6

谢谢你的回答。你的解决方案也可能有所帮助。我通过从这个网站下载“2007 Office System Driver”来解决了问题:http://www.microsoft.com/download/en/confirmation.aspx?displayLang=en&id=23734 我认为你建议的“Access 2007 Runtime”也可以完成同样的工作 :-)。 - Jedi
2
Access 2007 Runtime提供Microsoft.ACE.OLEDB.12.0。如果您想使用14th,则必须下载Access 2010 Runtime http://www.microsoft.com/en-us/download/details.aspx?id=10910 - Anton Sivov

2

对于其他对我的解决方案感兴趣的人,我发现Microsoft.ACE.OLEDB.14.0不支持Access 2010。相反,我使用了Microsoft.ACE.OLEDB.12.0。

您可以从此网站下载他们的“2007 Office系统驱动程序:数据连接组件”:2007 Office System Driver: Data Connectivity Components


4
微软Access 2007 = ACE 12;微软Access 2010 = ACE 14;微软Access 2013 = ACE 15。 - Derek Johnson

2

使用 System.Data.OleDb 库进行添加。

现在是关于连接字符串的部分。

OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Aishwar NIGAM\\Documents\\indianOil.accdb");

0

我曾经遇到过类似的问题,但这只是在我的情况下使用了一个普通的mdb文件。对于这种情况,Provider=Microsoft.Jet.OLEDB.4.0可以解决问题,无需下载任何额外的运行时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接