пятница, 28 января 2011 г.

Мистический баг.

На днях столкнулась с такой проблемой. Как мы знаем подключение к БД происходит с помощью строки ConnectionString. Есть несколько способов ее объявления.

1. Самый грамотный по моему мнению способ с помощью ConfigurationManager используя данные app.config

string connString = СonfigurationManager.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.testConnectionString"].ConnectionString;

Не работает!
Ладно, пробуем вариант 2.

2. Прописываем все данные ручками, задавая местоположение БД через папку проекта, в которой она находится

string connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

Снова нет доступа к базе.

3. Третий способ. Берем вариант 2 и жестко (а это по-любому неправильно. Например как после этого решить проблему переноса проекта?!) задаем местоположение нашей БД.

string connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\***\\Desktop\\MyProject\\WindowsFormsApplication1\\test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

Этот ламерский вариант работает! База обновляет, удаляет, добавляет и позволяет всячески достучаться до нее.

Вот в чем принципиальная разница? Мистика кода?

        

1 комментарий:

  1. Еще важно - при добавлении в проект базы данных появляется сообщение - надо ли базу данных добавить в решение. Если нажимаешь нет, то все нормально сохраняется. Если же добавляешь базу данных и она отображается в окне Solution Explorer, то сохранение данных надо проверять не кликая на значок базы в окне Solution Explorer - там изменения не сохраняются - надо зайти в папку проекта, в папку Bin - туда автоматически копируется база данных и если сохранение прошло успешно, то новые данные там сохранятся.

    ОтветитьУдалить