На днях столкнулась с такой проблемой. Как мы знаем подключение к БД происходит с помощью строки 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. Самый грамотный по моему мнению способ с помощью 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";
Этот ламерский вариант работает! База обновляет, удаляет, добавляет и позволяет всячески достучаться до нее.
Вот в чем принципиальная разница? Мистика кода?
Еще важно - при добавлении в проект базы данных появляется сообщение - надо ли базу данных добавить в решение. Если нажимаешь нет, то все нормально сохраняется. Если же добавляешь базу данных и она отображается в окне Solution Explorer, то сохранение данных надо проверять не кликая на значок базы в окне Solution Explorer - там изменения не сохраняются - надо зайти в папку проекта, в папку Bin - туда автоматически копируется база данных и если сохранение прошло успешно, то новые данные там сохранятся.
ОтветитьУдалить