web-dev-qa-db-fra.com

Comment se connecter à un fichier MS Access (mdb) en utilisant C #?

J'essaie de me connecter à un fichier mdb et je comprends que j'aurais besoin du fournisseur de données Microsoft.OLEDB.JET.4.0. Malheureusement, je ne l'ai pas installé sur la machine (universitaire)… .. Étant donné qu'ils ne fournissent pas ce fournisseur, je pense qu'il devrait y avoir un moyen de contourner le problème. 

Comment puis-je me connecter au fichier sans Microsoft.OLEDB.JET.4.0 ou existe-t-il une alternative?

J'ai les fournisseurs suivants:

Available Ole DB providers

J'ai essayé d'utiliser OLE DB Provider for Microsoft Directory Services, auquel, lors du test de la connexion, le message «Test a réussi mais certains paramètres n'ont pas été acceptés par le fournisseur». J'ai pris cette ficelle et je l'ai utilisée quand même et j'ai eu ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).

12
Sushan Ghimire

Le moyen le plus simple de se connecter consiste à utiliser OdbcConnection avec un code comme celui-ci.

using System.Data.Odbc;

using(OdbcConnection myConnection = new OdbcConnection())
{
    myConnection.ConnectionString = myConnectionString;
    myConnection.Open();

    //execute queries, etc

}

où myConnectionString est quelque chose comme ça

myConnectionString = @"Driver={Microsoft Access Driver (*.mdb)};" + 
"Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;

Voir ConnectionStrings

En alternative, vous pouvez créer un DSN puis utiliser ce DSN dans votre chaîne de connexion.

  • Ouvrez le Panneau de configuration - Outils d’administration - Source de données ODBC Manager
  • Accédez à la page DSN système et ajoutez un nouveau DSN.
  • Choisissez le pilote Microsoft Access (* .mdb) et appuyez sur FIN.
  • Définissez le nom du DSN (choisissez MyDSN pour cet exemple)
  • Sélectionnez la base de données à utiliser
  • Essayez les commandes Compact ou Recover pour voir si la connexion fonctionne.

maintenant votre connectionString pourrait être écrit de cette façon

myConnectionString = "DSN=myDSN;"
22
Steve

Voici comment utiliser une base de données Access OLEDB ou Ace OLEDB Jet:

using System.Data;
using System.Data.OleDb;

string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source=C:\myPath\myFile.mdb;" +                                    
                           "Persist Security Info=True;" +
                           "Jet OLEDB:Database Password=myPassword;";
try
{
    // Open OleDb Connection
    OleDbConnection myConnection = new OleDbConnection();
    myConnection.ConnectionString = myConnectionString;
    myConnection.Open();

    // Execute Queries
    OleDbCommand cmd = myConnection.CreateCommand();
    cmd.CommandText = "SELECT * FROM `myTable`";
    OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // close conn after complete

    // Load the result into a DataTable
    DataTable myDataTable = new DataTable();
    myDataTable.Load(reader);
}
catch (Exception ex)
{
    Console.WriteLine("OLEDB Connection FAILED: " + ex.Message);
}
4
DEXTER360

Quelle extension de fichier Access ou vous utilisez? Jet OLEDB ou Ace OLEDB . Si votre base de données Access est .mdb (aka Jet Oledb)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Oledb

namespace MembershipInformationSystem.Helpers
{
    public class dbs
    {
        private String connectionString;
        private String OleDBProvider = "Microsoft.JET.OLEDB.4.0"; \\if ACE Microsoft.ACE.OLEDB.12.0
        private String OleDBDataSource = "C:\\yourdb.mdb";
        private String OleDBPassword = "infosys";
        private String PersistSecurityInfo = "False";

        public dbs()
        {

        }

        public dbs(String connectionString)
        {
            this.connectionString = connectionString;
        }

        public String konek()
        {
            connectionString = "Provider=" + OleDBProvider + ";Data Source=" + OleDBDataSource + ";JET OLEDB:Database Password=" + OleDBPassword + ";Persist Security Info=" + PersistSecurityInfo + "";
            return connectionString;
        }
    }
}
3
Bon

Vous devez utiliser le "Fournisseur de base de données Microsoft OLE pour les pilotes ODBC" pour accéder à Microsoft Access. Voici l'exemple de tutoriel sur son utilisation

http://msdn.Microsoft.com/en-us/library/aa288452(v=vs.71).aspx

3
RajN

Essaye ça..

using System.Data.OleDb;

OleDbConnection dbConn;

dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;");
0
Kishore Kumar

Un autre moyen simple de se connecter consiste à utiliser un fichier OdbcConnection using App.config fichier comme celui-ci

  <appSettings>  
    <add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True"/>
  </appSettings>

MyDB.mdb est mon fichier de base de données et il est présent dans le dossier principal de l'application avec le fichier exe principal.

si votre fichier mdf a un mot de passe, utilisez-le comme ceci

  <appSettings>
    <add key="Conn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|MyDB.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Admin$@123"/>
  </appSettings>
0
Durgesh Pandey