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). Comme ils ne fournissent pas ce fournisseur, je pense qu'il devrait y avoir une solution.

Comment puis-je me connecter au fichier sans Microsoft.OLEDB.JET.4.0 ou y a-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 pendant que je teste la connexion, J'obtiens 'Test 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) .

11
demandé sur Sushan Ghimire 2012-04-29 22:34:31

6 réponses

le moyen le plus simple de se connecter est par le biais D'une connexion Odbcc utilisant 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 Câbles De Connexion

en alternative vous pouvez créer un DSN et ensuite utiliser ce DSN dans votre chaîne de connexion

  • ouvrir le Panneau de contrôle - Outils administratifs-données ODBC Source Manager
  • aller à la page DSN système et Ajouter un nouveau DSN
  • choisissez le pilote Microsoft Access (*.mdb) et presse fin
  • définir le nom du DSN (choisissez MyDSN pour cet exemple)
  • sélectionner la base de données à utiliser
  • essayez les commandes Compact ou Recover pour voir si la connexion fonctionne

maintenant votre chaîne de connexion pourrait être écrite en par ici

myConnectionString = "DSN=myDSN;"
19
répondu Steve 2012-04-30 08:20:37

Voici comment utiliser un Jet OLEDB ou Ace OLEDB Access DB:

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
répondu DEXTER360 2015-04-23 20:03:20

vous devez utiliser" Microsoft OLE DB Provider for ODBC Drivers " pour accéder à Microsoft Access. Voici un exemple de tutoriel sur l'utilisation de

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

3
répondu RajN 2012-04-29 18:44:11

quelle extension de fichier Access ou utilisez-vous? Le Jet OLEDB ou L'Ace OLEDB. Si votre accès DB est .mdb (alias 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
répondu Bon 2013-08-29 10:20:38

essayez ceci..

using System.Data.OleDb;

OleDbConnection dbConn;

dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;");
0
répondu Kishore Kumar 2012-04-29 19:25:16

une autre façon la plus simple de se connecter est par une OdbcConnection en utilisant 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 d'application primaire courant avec le fichier principal exe.

si votre fichier mdf a un mot de passe, alors utilisez 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
répondu Durgesh Pandey 2017-07-15 03:28:33