Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, Entity Framework
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/58: Рейтинг темы: голосов - 58, средняя оценка - 4.67
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696

Путь к базе данных

01.08.2011, 22:44. Показов 10747. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю приложение, работающее с БД. Возникла пара вопросов:
1. Если подключаться к БД используя Data Source в студии, то с помощью чего потом можно управлять подключением к бд? К примеру, как программно закрыть подключение или программно создать БД, которую настроили? (к примеру, в дельфях все подключения и проче вещи были компонентами отдельными (datasource, dataset и т. д.), а тут я ни одного компонента не вижу)
2. Возможно ли в рантайме изменить connection string (путь к файлу бд) и только после этого подключиться к БД (если настройка была через data source)?

P. S. использую CE

Спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2011, 22:44
Ответы с готовыми решениями:

Путь к базе данных
Всем привет)вопрос наверняка глупый,но меня поставил в тупик.. На нескольких формах имеется подключение к БД Acess OleDbConnection...

Путь к базе данных
База данных находится в папке debug. Как можно прописать в app.config путь к базе данных сокращенно, чтобы при перемещении программы на...

Как указать путь к базе данных?
в свойствах БД поставил что б она не копировалась постоянно и VS стала выдавать такую ошибку : код на загрузку БД : private...

12
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.08.2011, 00:50
Цитата Сообщение от Vourhey Посмотреть сообщение
Если подключаться к БД используя Data Source в студии, то с помощью чего потом можно управлять подключением к бд?
Я так понимаю весь код сздавался автоматически, а ты лишь указал к чему коннектится. В таком случае все подключения (отключения) происходят автоматически. Для того что бы управлять, нужно все руками писать.

Цитата Сообщение от Vourhey Посмотреть сообщение
программно создать БД, которую настроили?
Честно говоря я не совсем понял этот вопрос. БД сначала создают, а затем настраивают, а у тебя как в зазеркалье.
Цитата Сообщение от Vourhey Посмотреть сообщение
в дельфях все подключения и проче вещи были компонентами отдельными (datasource, dataset и т. д.
В C# тоже самое: DataSet - это кэш данных, который содержит в своем составе таблицы DataTable, они в свою очередь заполняются данными из БД посредством TableAdapter. DataSource - свойство компонентов (в данном контексте), указывающее в качестве источника данных одну из DataTable.

Цитата Сообщение от Vourhey Посмотреть сообщение
Возможно ли в рантайме изменить connection string
Если код написан вручную, то легко; для сгенерированного автоматически я пока что такой возможности не нашел

Добавлено через 1 минуту
Цитата Сообщение от Vourhey Посмотреть сообщение
программно создать БД
для этого нужно создать подключение к БД master, и запросом создавать БД.
0
ziplee
02.08.2011, 12:00
Цитата Сообщение от Vourhey Посмотреть сообщение
2. Возможно ли в рантайме изменить connection string (путь к файлу бд) и только после этого подключиться к БД (если настройка была через data source)?
Цитата Сообщение от nio Посмотреть сообщение
Если код написан вручную, то легко; для сгенерированного автоматически я пока что такой возможности не нашел
Когда автоматически генерируешь базу , то создается поднастроечка под ConnectionString
Settings.Default["ConnectionString"], не помню как точно она называется, но можеш посмотреть в Properties->Settings проекта. И уже ее можно руками менять, а в OleDbConnection ее использовать.
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
06.08.2011, 14:33  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Для того что бы управлять, нужно все руками писать.
Какой тогда смысл во всех этих компонентах? А если программа будет установлена на комп, где диск вообще по-другому называется, не то, что путь к папке? То есть, таким образом получаем непереносимую с машины на машину программу?
Цитата Сообщение от ziplee Посмотреть сообщение
И уже ее можно руками менять, а в OleDbConnection ее использовать.
Да, видел. Как я понимаю, это настройки приложения и их нужно менять до запуска?

Цитата Сообщение от nio Посмотреть сообщение
В C# тоже самое: DataSet - это кэш данных, который содержит в своем составе таблицы DataTable, они в свою очередь заполняются данными из БД посредством TableAdapter. DataSource - свойство компонентов (в данном контексте), указывающее в качестве источника данных одну из DataTable.
Имею ввиду, что в дельфях можно управлять с помощью свойств active, connect и подключаться, когда вздумается. Я не нашел таких компонентов в случае с шарпом. Грубо говоря, когда подключаюсь кидаю на форму DataSource,DataSet, DataQuery. Выставляю свойства. В любой момент во время работы могу изменить свойство active, чтобы подключиться/отключиться и т. д.. Когда в VS делал подключение к БД не увидел там каких либо компонентов, поэтому у меня и возник такой вопрос, где искать компоненты, которые приклеили БД к моему приложению?
Цитата Сообщение от nio Посмотреть сообщение
Если код написан вручную, то легко; для сгенерированного автоматически я пока что такой возможности не нашел
Так вот и я о том же. Кодом я уже написал. Просто интересно касательно компонентов и настройки БД в VS.
Цитата Сообщение от nio Посмотреть сообщение
для этого нужно создать подключение к БД master, и запросом создавать БД.
В общем-то, это и есть код, как я понимаю.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.08.2011, 14:40
Если БД SQL Server то просто ее в папку скинуть нужно где все БД хранятся. В ConnectionString просто указать название и тогда сервак сам будет знать где она находится. Никаких путей к ней писать не нужно. Если БД Access то укажи путь относительно exe файла. Путь к exe:
C# Скопировано
1
Application.StartupPath
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
06.08.2011, 18:38  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение
Если БД Access то укажи путь относительно exe файла
Указать где?
Цитата Сообщение от Петррр Посмотреть сообщение
Application.StartupPath
Это свойство, как я понимаю, только у запущенного приложения активно. Разве запущенное приложение уже не подключено к БД, путь к которому был прописан на стадии девелопинга в настройках?

Добавлено через 31 секунду
Цитата Сообщение от Петррр Посмотреть сообщение
Если БД SQL Server
SQL CE
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.08.2011, 21:07
Приложение будет подключено к БД, когда ты явно вызовешь метод Open() или Adapter вызовет метод Fill или Update.
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
06.08.2011, 22:18  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение
Приложение будет подключено к БД, когда ты явно вызовешь метод Open()
У какого объекта вызывать 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  [ТС]
Цитата Сообщение от Петррр Посмотреть сообщение
В Delphi у ADOConnection есть свойство Connected. Если оно False то приложение не подключено к БД. Также в C# должен быть компонент, который выполняет соединение с БД. Это может быть OleDbConnection, OdbcConnection, SqlConnection и прочее.
Да, логично, что должен быть...
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
07.08.2011, 12:28
Цитата Сообщение от Vourhey Посмотреть сообщение
А если программа будет установлена на комп, где диск вообще по-другому называется, не то, что путь к папке? То есть, таким образом получаем непереносимую с машины на машину программу?
Ну тут, как уже упоминал Петррр, все зависит от того, какая БД используется. Если используется SQLServer, то путь к БД не имеет значения, т.к. правильным является подключение БД к серверу и обращение к ней по имени. Все что нужно, это каждый раз, присоединяя БД, давать ей одно имя. С локальными БД тоже не сложно: первый раз в конфигурационном файле СonnectionString меняешь(это можно сделать и программно) и все, дальше прога будет работать нормально.
Цитата Сообщение от Vourhey Посмотреть сообщение
Как я понимаю, это настройки приложения и их нужно менять до запуска?
Это можно сделать и в момент запуска.

Цитата Сообщение от Vourhey Посмотреть сообщение
в дельфях можно управлять с помощью свойств active, connect и подключаться, когда вздумается
В шарпе тоже самое. Просто есть разные классы для подключения БД, но все они используют подключение на основе класса Connection. В объектах Command и DataReader управление подключением осуществляется "вручную", а объект DataAdapter при вызове метода Fill автоматически открывает соединение, получает данные, а затем закрывает соединение.
Цитата Сообщение от Vourhey Посмотреть сообщение
поэтому у меня и возник такой вопрос, где искать компоненты, которые приклеили БД к моему приложению?
Честно говоря не совсем понял, что в твоем контексте значит "прикрепили". Как я понимаю, ты имел ввиду способы получения данных из БД в свое приложение. Тут все зависит от того, в каком объеме ты хочешь получать данные, и в каком виде ты будешь отображать их в приложении. Если тебе нужно выполнить какой-то разовый запрос невозвращающий значений (обновления данных или управления БД) или получить какое-то одно значение (скалярное), то тут достаточно объекта Command. Если нужно получить одну или несколько строк и разместить их в "неконтейнерных" компонентах (например textBox, label и т.п.), то рациональнам будет использование DataReader. Ну а для получения больших объемов данных (в том числе из нескольких таблиц), которые будут отображаться в "контейнерных" компонентах (dataGridView, ComboBox и т.п.) следует использовать соединение через DataAdapter с размещением данных в кэше (DataSet, DataTable) и связывая его с этими компонентами через свойство DataSource.
Цитата Сообщение от Vourhey Посмотреть сообщение
Указать где?
в ConnectionString

Цитата Сообщение от Vourhey Посмотреть сообщение
Разве запущенное приложение уже не подключено к БД, путь к которому был прописан на стадии девелопинга в настройках?
Нет. Момент подключения зависит от того, как осуществляется подключение к БД (см. выше). Даже при автоматической генерации студией компонентов соединения с БД подключение к БД будет выполнено при первом вызове метода Fill какого-нибудь адаптера.

Цитата Сообщение от Vourhey Посмотреть сообщение
Вот у меня есть форма, я настроил в студии подключение к БД через DataSource, какой объект у меня появился?
Тебе видней Ну а на самом деле при этом у тебя должен был создаться DataSet c набором DataTable (их количество зависит от того, что ты указывал в мастере создания подключения) и соответствующими им адаптерами. На форме, на которой содавалось подключение, появятся экземпляры DataSet, адаптера и BindingSource.

Вроде на все ответил
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
31.08.2011, 19:00  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Просто есть разные классы для подключения БД
Да, я это понимаю. Просто я не могу нигде найти, где студия пишет, какие она классы использовала и какие она мне компоненты, где создала.
Цитата Сообщение от nio Посмотреть сообщение
На форме, на которой содавалось подключение, появятся экземпляры DataSet, адаптера и BindingSource.
Воооот...это-то мне и нужно было. Просто у меня на форме нет нифига
Цитата Сообщение от nio Посмотреть сообщение
Вроде на все ответил
Угу, спасибо
Цитата Сообщение от nio Посмотреть сообщение
Даже при автоматической генерации студией компонентов соединения с БД подключение к БД будет выполнено при первом вызове метода Fill какого-нибудь адаптера.
Странно...Тогда не понимаю логику выдачи ошибки о невозможности подключиться к БД при простом старте приложения, учитывая, что я не писал код вызывающий fill.

P. S. ладно, нужно почитать что-нибудь по работе с БД из студии с шарпом. Кодом у меня уже давно все сделано, а вот через студийные методы все как-то неявно совсем.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
31.08.2011, 22:37
Цитата Сообщение от Vourhey Посмотреть сообщение
Просто я не могу нигде найти, где студия пишет, какие она классы использовала и какие она мне компоненты, где создала.
ДОлжен был в проекте в SolutionExplorer появится DataSet, по нему два раза, и увидишь все в дизайнере.
Цитата Сообщение от Vourhey Посмотреть сообщение
Просто у меня на форме нет нифига
Это невизуальные компоненты, экземпляры снизу под формой появляются
Цитата Сообщение от Vourhey Посмотреть сообщение
Тогда не понимаю логику выдачи ошибки о невозможности подключиться к БД при простом старте приложения, учитывая, что я не писал код вызывающий fill.
Когда автоматически студия добавляет адаптер, в метод Form_Load также автоматически прописывается метод Fill для этого адаптера. Т.е. если на первой форме есть компоненты, которые тянут данные из БД, то попытка подключиться к БД будет происходить до запуска этого окна.

Добавлено через 51 секунду
Цитата Сообщение от Vourhey Посмотреть сообщение
почитать что-нибудь по работе с БД из студии с шарпом
Рекомендую Сеппа"Ado.Net"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2011, 22:37
Помогаю со студенческими работами здесь

Кириллический путь к базе данных (OleDbException)
День добрый. Есть база данных dbf (Microsoft Visual FoxPro), устанавливаю с ней соединение из C# кода и вывожу данные. Находится в...

Не удаётся установить путь к базе данных
Здравствуйте. Подскажите пожалуйста, как правильно установить путь к созданной базе данных SQL в виндовс форм / public partial class...

EntityFramework Code First путь к локальной базе данных
Только начал разбираться с Code First. Как при работе с ним указать путь, где будет создаваться база данных? По умолчанию она создается на...

Можно ли изменить путь к базе данных в DataSet, созданном мастером подключений
Ниже фрагмент кода, отвечающий за добавление в таблицу данных из access и работу с этими данными в таблице. Источник данных - содержимое...

Как изменить путь к базе данных (пример Contacts_2 по книге Культин.Н.Б. 2009)?
В примере прописан путь D:\Database\Contacts.mdb Как изменить на другой путь расположения базы "Contacts.mdb" Изменил во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Управление топиками и разделами 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 на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер