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

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

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

Студворк — интернет-сервис помощи студентам
Создаю приложение, работающее с БД. Возникла пара вопросов:
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru