Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
Путь к базе данных01.08.2011, 22:44. Показов 10747. Ответов 12
Метки нет Все метки)
(
Создаю приложение, работающее с БД. Возникла пара вопросов:
1. Если подключаться к БД используя Data Source в студии, то с помощью чего потом можно управлять подключением к бд? К примеру, как программно закрыть подключение или программно создать БД, которую настроили? (к примеру, в дельфях все подключения и проче вещи были компонентами отдельными (datasource, dataset и т. д.), а тут я ни одного компонента не вижу) 2. Возможно ли в рантайме изменить connection string (путь к файлу бд) и только после этого подключиться к БД (если настройка была через data source)? P. S. использую CE Спасибо
0
|
01.08.2011, 22:44 | |
Ответы с готовыми решениями:
12
Путь к базе данных Как указать путь к базе данных? |
![]() |
|
02.08.2011, 00:50 | |
Я так понимаю весь код сздавался автоматически, а ты лишь указал к чему коннектится. В таком случае все подключения (отключения) происходят автоматически. Для того что бы управлять, нужно все руками писать.
Честно говоря я не совсем понял этот вопрос. БД сначала создают, а затем настраивают, а у тебя как в зазеркалье. ![]() В C# тоже самое: DataSet - это кэш данных, который содержит в своем составе таблицы DataTable, они в свою очередь заполняются данными из БД посредством TableAdapter. DataSource - свойство компонентов (в данном контексте), указывающее в качестве источника данных одну из DataTable. Если код написан вручную, то легко; для сгенерированного автоматически я пока что такой возможности не нашел ![]() Добавлено через 1 минуту для этого нужно создать подключение к БД master, и запросом создавать БД.
0
|
ziplee
|
|
02.08.2011, 12:00 | |
Когда автоматически генерируешь базу , то создается поднастроечка под ConnectionString
Settings.Default["ConnectionString"], не помню как точно она называется, но можеш посмотреть в Properties->Settings проекта. И уже ее можно руками менять, а в OleDbConnection ее использовать. |
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
06.08.2011, 14:33 [ТС] | |
Какой тогда смысл во всех этих компонентах? А если программа будет установлена на комп, где диск вообще по-другому называется, не то, что путь к папке? То есть, таким образом получаем непереносимую с машины на машину программу?
Да, видел. Как я понимаю, это настройки приложения и их нужно менять до запуска? Имею ввиду, что в дельфях можно управлять с помощью свойств active, connect и подключаться, когда вздумается. Я не нашел таких компонентов в случае с шарпом. Грубо говоря, когда подключаюсь кидаю на форму DataSource,DataSet, DataQuery. Выставляю свойства. В любой момент во время работы могу изменить свойство active, чтобы подключиться/отключиться и т. д.. Когда в VS делал подключение к БД не увидел там каких либо компонентов, поэтому у меня и возник такой вопрос, где искать компоненты, которые приклеили БД к моему приложению? Так вот и я о том же. Кодом я уже написал. Просто интересно касательно компонентов и настройки БД в VS. В общем-то, это и есть код, как я понимаю.
0
|
![]() 6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
|
||||||
06.08.2011, 14:40 | ||||||
Если БД SQL Server то просто ее в папку скинуть нужно где все БД хранятся. В ConnectionString просто указать название и тогда сервак сам будет знать где она находится. Никаких путей к ней писать не нужно. Если БД Access то укажи путь относительно exe файла. Путь к exe:
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
06.08.2011, 18:38 [ТС] | |
Указать где?
Это свойство, как я понимаю, только у запущенного приложения активно. Разве запущенное приложение уже не подключено к БД, путь к которому был прописан на стадии девелопинга в настройках? Добавлено через 31 секунду SQL CE
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
06.08.2011, 22:18 [ТС] | |
У какого объекта вызывать Open? В случае с дельфями на форме валяется компонент, а тут я не нашел их. Вот у меня есть форма, я настроил в студии подключение к БД через DataSource, какой объект у меня появился?
0
|
![]() 6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
|
|
06.08.2011, 22:36 | |
В Delphi у ADOConnection есть свойство Connected. Если оно False то приложение не подключено к БД. Также в C# должен быть компонент, который выполняет соединение с БД. Это может быть OleDbConnection, OdbcConnection, SqlConnection и прочее.
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
06.08.2011, 23:34 [ТС] | |
0
|
![]() |
|
07.08.2011, 12:28 | |
Ну тут, как уже упоминал Петррр, все зависит от того, какая БД используется. Если используется SQLServer, то путь к БД не имеет значения, т.к. правильным является подключение БД к серверу и обращение к ней по имени. Все что нужно, это каждый раз, присоединяя БД, давать ей одно имя. С локальными БД тоже не сложно: первый раз в конфигурационном файле СonnectionString меняешь(это можно сделать и программно) и все, дальше прога будет работать нормально.
Это можно сделать и в момент запуска. В шарпе тоже самое. Просто есть разные классы для подключения БД, но все они используют подключение на основе класса Connection. В объектах Command и DataReader управление подключением осуществляется "вручную", а объект DataAdapter при вызове метода Fill автоматически открывает соединение, получает данные, а затем закрывает соединение. Честно говоря не совсем понял, что в твоем контексте значит "прикрепили". Как я понимаю, ты имел ввиду способы получения данных из БД в свое приложение. Тут все зависит от того, в каком объеме ты хочешь получать данные, и в каком виде ты будешь отображать их в приложении. Если тебе нужно выполнить какой-то разовый запрос невозвращающий значений (обновления данных или управления БД) или получить какое-то одно значение (скалярное), то тут достаточно объекта Command. Если нужно получить одну или несколько строк и разместить их в "неконтейнерных" компонентах (например textBox, label и т.п.), то рациональнам будет использование DataReader. Ну а для получения больших объемов данных (в том числе из нескольких таблиц), которые будут отображаться в "контейнерных" компонентах (dataGridView, ComboBox и т.п.) следует использовать соединение через DataAdapter с размещением данных в кэше (DataSet, DataTable) и связывая его с этими компонентами через свойство DataSource. в ConnectionString Нет. Момент подключения зависит от того, как осуществляется подключение к БД (см. выше). Даже при автоматической генерации студией компонентов соединения с БД подключение к БД будет выполнено при первом вызове метода Fill какого-нибудь адаптера. Тебе видней ![]() Вроде на все ответил ![]()
1
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
31.08.2011, 19:00 [ТС] | |
Да, я это понимаю. Просто я не могу нигде найти, где студия пишет, какие она классы использовала и какие она мне компоненты, где создала.
Воооот...это-то мне и нужно было. Просто у меня на форме нет нифига ![]() Угу, спасибо ![]() Странно...Тогда не понимаю логику выдачи ошибки о невозможности подключиться к БД при простом старте приложения, учитывая, что я не писал код вызывающий fill. P. S. ладно, нужно почитать что-нибудь по работе с БД из студии с шарпом. Кодом у меня уже давно все сделано, а вот через студийные методы все как-то неявно совсем.
0
|
![]() |
|
31.08.2011, 22:37 | |
ДОлжен был в проекте в SolutionExplorer появится DataSet, по нему два раза, и увидишь все в дизайнере.
Это невизуальные компоненты, экземпляры снизу под формой появляются Когда автоматически студия добавляет адаптер, в метод Form_Load также автоматически прописывается метод Fill для этого адаптера. Т.е. если на первой форме есть компоненты, которые тянут данные из БД, то попытка подключиться к БД будет происходить до запуска этого окна. Добавлено через 51 секунду Рекомендую Сеппа"Ado.Net"
0
|
31.08.2011, 22:37 | ||||||
Помогаю со студенческими работами здесь
13
Кириллический путь к базе данных (OleDbException) Не удаётся установить путь к базе данных EntityFramework Code First путь к локальной базе данных Можно ли изменить путь к базе данных в DataSet, созданном мастером подключений Как изменить путь к базе данных (пример Contacts_2 по книге Культин.Н.Б. 2009)? Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
|
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
|
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
|
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
|
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
|
Линейное решение нелинейной задачи будет иметь приблизительный результат вычисления для метода обработки данных из double buffering.
Hrethgir 10.04.2025
Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу можно будет корректировать по ходу. Это потому что прямое соотношение. . .
|
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
|
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
|
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
|
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
|