web-dev-qa-db-fra.com

Connexion OLEDB à Access Database (accdb)

Je veux faire une application simple pour un exercice, alors ça pourrait être bien de se connecter à une base de données simple comme Access (.accdb)

Mon programme ressemble à ceci:

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");
       } 

    }
  }

J'utilise Visual Studio 2010. Lorsque je teste mon application en utilisant le mode de débogage intégré "Démarrer sans débogage" (CTRL + F5), j'obtiens cette erreur:

Le fournisseur 'Microsoft.ACE.OLEDB.14.0' n'est pas enregistré sur la machine locale.

J'ai essayé de télécharger et d'installer "Microsoft Access Database Engine 2010 Redistributable" (64 bits) à partir de Microsoft Omepage: http://www.Microsoft.com/download/en/details.aspx?id=13255

Malheureusement, cela n'a pas résolu le problème. J'ai toujours l'erreur lorsque le myAdapptor.Fill () est exécuté . Quel est le problème?

13
Jedi

Vous avez besoin du Access 2007 Runtime .

8
Tom Bass

Pour les autres personnes intéressées par ma solution, j'ai découvert que Microsoft.ACE.OLEDB.14.0 n'est pas pris en charge pour Access 2010. À la place, j'ai utilisé Microsoft.ACE.OLEDB.12.0.

Vous pouvez télécharger leur "Pilote Office System 2007: Composants de connectivité de données" à partir de ce site: Pilote Office System 2007: Composants de connectivité de données

2
Jedi

Avait un problème similaire, mais juste un plan vieux mdb dans mon cas. Provider = Microsoft.Jet.OLEDB.4.0 fait l'affaire, pas besoin de télécharger des runtimes supplémentaires.

0
Rob Sedgwick

ajouter en utilisant System.Data.OleDb bibliothèque.

maintenant pour la connection string  

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