2010-12-13 6 views
1

эй, я новичок в подключении к базам данных и по какой-то причине каждый раз, когда я использовать эти следующие строки мой крах программы:как подключиться к Access 2007 с C#

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\Company.accdb" 
    OleDbConnection con = new OleDbConnection(connectionString); 

в моей папке отладки я получил компанию .accdb access file Редактировать: Я получаю «Microsoft.Ace.OLEDB12.0» провайдер не зарегистрирован на локальной машине, не знаю, как его решить? заранее спасибо за вашу помощь

+0

Какое сообщение об ошибке вы получаете? –

+0

ну, вы источник данных не выглядит слишком хорошо? –

+0

ну, я не хотел показывать весь код слишком мало, чтобы показать, что я знаю, что программа там рушится ... когда я ставил попытку и поймал ее, я получаю следующее исключение: «инициализатор типа выбрасывал исключение, которое doesnt скажем много –

ответ

2

Две вещи -

  1. Эта строка соединения полагаться на ACE провайдера OLEDB (обычно поставляется с Office 2007 - аппарат должен иметь этот провайдер)
  2. Строка соединения является запрашивающий словарь данных. Вероятно, вам нужно использовать следующую форму:

    Провайдер = Microsoft.ACE.OLEDB.12.0; Источник данных = C: \ myFolder \ myAccess2007file.accdb; Persist Security Info = False;

Для защищенного пароля файлов, форма будет Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Jet OLEDB:Database Password=MyDbPassword;

Я также предлагаю попробовать другой поставщик (ODBC возможно) вместо этого. Для различных строк подключения для Access 2007 см. http://www.connectionstrings.com/access-2007

+0

Я получаю «Microsoft.Ace.OLEDB12.0» провайдер не зарегистрирован на локальной машине, не знаю, как его решить? –

+0

@Nadav, как говорится, этот компонент обычно поставляется с офисом 2007. В любом случае, вы можете загрузить его с http://www.microsoft.com/downloads/en/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en – VinayC

+0

По-видимому, есть и другие причины для этой ошибки, кроме этого(см. комментарий OP). – Fionnuala