2012-04-29 6 views
10

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

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

Я следующие провайдеры:

Available Ole DB providers

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

ответ

18

Самый простой способ соединиться через 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 Источник данных менеджер
  • Перейти к Страница системной DSN и добавьте новый DSN
  • Выберите Microsoft Access Driver (* .mdb) и нажмите END
  • Установите имя DSN (Выберите MyDSN для данного примера)
  • Выберите базу данных для использования
  • Попробуйте Compact или восстановить команды, чтобы увидеть, если соединение работает

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

myConnectionString = "DSN=myDSN;" 
+1

Спасибо, что «OdbcConnection» сделал это. –

+0

Когда MDW находится на картинке, вам может понадобиться другая строка подключения. см. [здесь] (http://stackoverflow.com/a/18307822/426315) – itsho

+0

Довольно хороший ответ, вы также можете взглянуть на этот другой вопрос [https://stackoverflow.com/questions/18430415/entity -framework-with-microsoft-access), чтобы проверить, как использовать Microsoft Access с Entity Framewor. –

3

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

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

+0

Это дало мне: 'Тест подключения не удалась из-за ошибки при инициализации поставщика. Имя источника данных не найдено и не указан драйвер по умолчанию. '. Как вы думаете, этот провайдер не существует? –

+0

Пожалуйста, ваши строки подключения ... – RajN

+0

Пожалуйста, обратитесь по этой ссылке для доступных строк подключения http://connectionstrings.com/access-2007 – RajN

0

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

using System.Data.OleDb; 

OleDbConnection dbConn; 

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

Если вы используете MS Access 2010 –

+0

да, используя Access 2010, но расширение файла .mdb –

3

Какое расширение доступа к файлу или вы используете? Jet OLEDB или Ace OLEDB. Если ваша БД доступа.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; 
     } 
    } 
} 
+1

Не является ли класс OleDbConnectionStringBuilder лучшим решением? http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbconnectionstringbuilder(v=vs.110).aspx – uli78

3

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

Другой простейший способ соединиться через 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 [email protected]"/> 
    </appSettings>