Как подключиться к файлу MS Access (mdb) с помощью C#?

Я пытаюсь подключиться к файлу MDB и я понимаю, что мне нужно Microsoft.OLEDB.JET.4.0 поставщик данных. К сожалению, я не установил его на (Университетской) машине. Поскольку они не предоставляют этого провайдера, я считаю, что должен быть способ обойти.

как я могу подключиться к файл без Microsoft.OLEDB.JET.4.0 или есть какая-то альтернатива ?

у меня есть следующие провайдеры:

Available Ole DB providers

Я пробовал использовать OLE DB Provider for Microsoft Directory Services, к которому пока испытывающ соединение, я получаю "тест успешно, но некоторые настройки не были приняты поставщиком". Я взял эту строку и использовал ее в любом случае, и я получил ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).

6 ответов


самый простой способ подключения - через OdbcConnection с использованием такого кода

using System.Data.Odbc;

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

    //execute queries, etc

}

где myConnectionString-это что-то вроде этого

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

посмотреть ConnectionStrings

в качестве альтернативы вы можете создать DSN, а затем использовать этот DSN в строке подключения

  • Откройте Панель управления - Администрирование - источник данных ODBC Менеджер!--15-->
  • перейдите на страницу System DSN и добавьте новый DSN
  • выберите драйвер Microsoft Access (*.mdb) и нажмите END
  • задайте имя DSN (выберите MyDSN для этого примера)
  • выбрать базу данных для использования
  • попробуйте команды Compact или Recover, чтобы узнать, работает ли соединение

Теперь ваша connectionString может быть написана таким образом

myConnectionString = "DSN=myDSN;"

вот как использовать Jet OLEDB или 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);
}

вы должны использовать "поставщик Microsoft OLE DB для драйверов ODBC", чтобы получить доступ к Microsoft Access. Вот пример учебника по его использованию

http://msdn.microsoft.com/en-us/library/aa288452 (v=против 71).aspx


какое расширение файла Access или вы используете? Реактивный OLEDB или Ace OLEDB. Если ваш DB доступа .mdb (он же 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;
        }
    }
}

попробуйте это..

using System.Data.OleDb;

OleDbConnection dbConn;

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

еще один простой способ для подключения через OdbcConnection используя App.config такой

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

базы данных mydb.mdb - это мой файл базы данных, и он присутствует в текущей основной папке приложения с основным exe-файлом.

Если ваш файл mdf имеет пароль, используйте вот так

  <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>