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:
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)
.
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;"
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);
}
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
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;
}
}
}
essayez ceci..
using System.Data.OleDb;
OleDbConnection dbConn;
dConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Registration.accdb;");
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>