[ADO.NET] Задание параметров подключения в рантайме
В дизайнере у адаптера ConnectionModifier выставить в public?
В дизайнере у адаптера ConnectionModifier выставить в public?Выставил Public.
Я так понимаю, теперь нужно конфигурировать свойство Connection для каждого адаптера?
Как-то не особо удобно (в особенности по сравнению с Delphi).
Я так понимаю, теперь нужно конфигурировать свойство Connection для каждого адаптера?Да.
Как-то не особо удобно (в особенности по сравнению с Delphi).
А как это выглядит в делфи?
В 2008ой студии еще генерируется АдаптерМанагер, через который можно всеми остальными жонглировать.
А как это выглядит в делфи?там есть необязательный компонент TDatabase. Если он имеется на форме при создании объектов, работающих с БД, то будет использована его конфигурация, в противном случае - у каждого объекта, работающего с БД, будет создан свой экземпляр.
Во времена .NET 1.1 Я тупо создавал новый SqlConnection и ставил его в поле Connection у InsertCommand UpdateCommand SelectCommand и DeleteCommand дата адаптера. Как минимум сейчас такой подход тоже имеет право на жизнь. И ещё можно в дизайнере насоздавать ДатаАдаптеров (или чё там ща используется для связи ДатаСетов с бд ? ) для различных баз и в рантайме пользовацца ими в зависимости от ситуации.
Насоздавать дата адаптеров - не вариант, т.к. данные подключения будут вводиться вручную.
есть опция для дизайнера — брать конекшен стринг из конфига
Property binding что ли? К сожалению, там нет свойств соединения.
Нет. Там в визарже галочка етсь.
есть опция для дизайнера — брать конекшен стринг из конфигаэто спасёт во время дизайна, но не во время выполнения
это спасёт во время дизайна, но не во время выполненияво время диплоимента тоже спасет. А вам надо прям в рантайме?
во время диплоимента тоже спасет. А вам надо прям в рантайме?судя по первому посту, да
Вот ещё один вопрос: есть какой-то способ заставить метод DataView.Find находить колонку не только при полном совпадении, но и при совпадении с началом поля, по которому осуществляется сортировка (пытался в конец строки добавлять %/*, не помогло)? Или как по другому сделать поиск в колонке по первым буквам, не прибегая к перебору всех строк?
DataView.Table.Select ?
Нет, мне нужно только выделить определённую строку. Короче, начальная задача состоит в том, чтобы при наборе текста с клавиатуры подсвечивалась подходящая строка. Пока работает через обход всех строчек в цикле, но это, имхо, какое-то кустарное решение.
ладно, этот вопрос снят: решили не извращаться, т.к. сервер вряд ли будет меняться, в крайнем случае - можно будет перебилдить.не может быть все так сложно
Создай у каждого свойство ConnectionString и в сеттере у коннекшена меняй это свойство.
У адаптеров для комманд (это которые не для таблиц, а для хранимок) в сеттере в цикле выставляй ConnectionString для всех команд.
можно будет перебилдить.эээ, датасеты конечно говно, но не настолько же. Достаточно в конфиге поменять коннекшенстиринг.
Оставить комментарий
Andbar
Имеется WindForms-приложение, которое при запуске подключается к базе данных.В приложении есть датасет, содержащий несколько (не менее пяти) таблиц с адаптерами.
Когда в процессе разработки потребовалось подключаться к другой базе данных на другом сервере, т.е. изменить строку подключения, обнаружилось, что эта строка прописывается для каждой таблицы в отдельном методе, при чём прописывается она в заголовке, генерируемом из датасета. Конечно, в хмлке, описывающей датасет, эта строка встречается только один раз, но мне от этого ни холодно, ни жарко.
Отсюда появился логичный вопрос: как реализовать смену строки подключения в рантайме? Я надеялся, что здесь есть инструмент подобный компоненту database в Delphi, через который можно управлять подключением, но похоже что ничего аналогичного нет: хоть на уровне дизайнера студии и существует некий "объект" называемый строкой подключения, но когда дело доходит до кода, он дробится на методы разных классов. Или я что-то неправильно делаю?