Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/32: Рейтинг темы: голосов - 32, средняя оценка - 4.91
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
1
.NET 2.x

Изменить путь к БД, хранящийся в settings

22.02.2012, 08:11. Показов 6224. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня. Для небольших приложений использую визуальные средства проектирования. При этом в настройках проекта, в settings создается item(string). При попытках его изменить программно, пишет то он только для чтения, т.е. что я хочу изменять путь к базе, например через ini, что бы путь в настройках менялся. Пробовал эти настройки в xml, но там тогда видна вся строка подключения включая и пароль. В общем вроде правильно выразился, как это сделать. спс
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2012, 08:11
Ответы с готовыми решениями:

Изменить пароль, хранящийся в md5
В бд хранится пароль в виде md5. Теперь я хочу взять из бд этот пароль который хранится в виде md5...

Путь к Settings.settings
Доброго времени суток, форумчане! Создаю обычную программу на WinForm. Мне понадобилось...

По нажатию на кнопку считывается Settings.xml, а в нем уже путь к файлу
Добрый день. Подскажите, как реализовать? необходимо чтобы по нажатию button1_Click запускался...

Изменить Data Source в settings через OpenFileDialog
Добрый день, возможно где то здесь решение нужное есть, но я перепробовал по всякому, облазил весь...

27
2756 / 2059 / 384
Регистрация: 22.07.2011
Сообщений: 7,781
22.02.2012, 14:08 2
что за визуальные средства и проектирования чего ?
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
23.02.2012, 08:04  [ТС] 3
Не программно, а визуально, средствами студии, после создания подключения, перетаскиванием на форму грида при этом создаются все необходимые для работы с базой компоненты, и в сеттинге хранится путь к базе, но только для чтения. Так понятно?
0
2756 / 2059 / 384
Регистрация: 22.07.2011
Сообщений: 7,781
23.02.2012, 12:49 4
http://msdn.microsoft.com/ru-r... 54494.aspx
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
10.03.2012, 08:31  [ТС] 5
Не нашел решения. Единственное, что нашел, в Setting делаю connecticonstring изменяемым не application а user. Тогда можно connecticonstring изменять, но при этом в C:\Documents and Settings\***\Application Data создается папка и именем программы, где красиво лежит xml с полным путем к базе и паролем. Делаю например так:
VB.NET
1
2
 Dim Nrc As String = IO.File.ReadAllText(My.Application.Info.DirectoryPath & "\1.txt")
        My.Settings.TMCConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Nrc & "\***.mdb;Jet OLEDB:Database Password=1"
Все работает, но вся инфа о строке подключения хранится в xml написано выше, и если его удалить, то прога вообще не запуститься, не выдавая ни каких ошибок. Может кто как легче это реализует. Просто ради нескольких табличек и одного отчета нету времени программно все писать. спс...
0
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
11.03.2012, 13:20 6
sua дело говорит, а точнее пишет))! Благодаря ему я с этой темой и разобрался (за что ему большое спасибо) ).
Вот тут Организация авторизации для приложения разбирался с похожей темой. Не уверен но может помочь.
А насчет удаления... можно же поставить проверку на существование файла и если его нет, то создавать.
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
11.03.2012, 19:49  [ТС] 7
Какой файл создавать? Ничего не понял.
Суть, повторюсь. Создается типизированный датасет, путем перетаскивания созданных через визард данных подключения. В Setting приложения создается ConnecticonString, только для чтения(изменение разрешено только апликашион), меняю на юзер, строка изменяется, в ней создается xml с данными это приложения, пытаюсь менять как написал выше, создается xml с полными данными о подключении, вкл пароль. Если его удалять, прога работать не будет. Если его изменить или удалять пр и загрузке, прога не запустится т.к. от туда и берет при загрузке строку, без всяких ошибок просо будет висеть в процессах.
А если я хочу в другом месте хранить путь, но задавать значение ConnecticonStrin программно , как то все очень сложно придумано. Если через ConfigurationManager, то все равно через setting, а я например хочу в ini хранить, но повторюсь что датасет типизированный, HELP...
0
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
11.03.2012, 20:15 8
Итак, начнем по порядку!
Когда мы добавляем в проект типизированный датасет, то вместе с ним создается файл app.config (файл именно так и называется.). Так вот... этот файл является шаблоном и его копия создается при компиляции проекта (хотя если его удалить копия все равно создаться). Созданная программа при организации подключения к БД обращается к этому файл и по информации в нем устанавливает соединение. Файл, кстати, называется <app>.exe.config, где в данном случае app - название проекта (проги).
Вот этом файле и можно программно менять и сохранять сведения о строке соединения с любыми настройками.
Я советую все таки использовать именно файл app.exe.config иначе нужно будет придумывать геморой на свою хм.. голову.
Так вот, чтобы обезопасить себя от удаления файл app.exe.config можно при запуске проги проверять этот файл на существование и в случае необходимости создавать его.

В контексте этого в чем вопрос? (про использование файла .ini меня не спрашивать)) )
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
11.03.2012, 21:28  [ТС] 9
Цитата Сообщение от _katon_ Посмотреть сообщение
Итак, начнем по порядку!
Когда мы добавляем в проект типизированный датасет, то вместе с ним создается файл app.config (файл именно так и называется.). Так вот... этот файл является шаблоном и его копия создается при компиляции проекта (хотя если его удалить копия все равно создаться). Созданная программа при организации подключения к БД обращается к этому файл и по информации в нем устанавливает соединение. Файл, кстати, называется <app>.exe.config, где в данном случае app - название проекта (проги).
Вот этом файле и можно программно менять и сохранять сведения о строке соединения с любыми настройками.
Я советую все таки использовать именно файл app.exe.config иначе нужно будет придумывать геморой на свою хм.. голову.
Так вот, чтобы обезопасить себя от удаления файл app.exe.config можно при запуске проги проверять этот файл на существование и в случае необходимости создавать его.

В контексте этого в чем вопрос? (про использование файла .ini меня не спрашивать)) )
Вопрос в том, что нафиг он нужен (app.config), если путь с паролем и прочей инфой. Пробовал уже программно дописывать пароль, ругается, что строка не того формата. Слышал, что можно шифровать, но все же. А мож простому юзеру нужно будет поменять, зачем другие секции видеть что в app.config.
0
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
11.03.2012, 23:38 10
Вопрос в том, что нафиг он нужен (app.config), если путь с паролем и прочей инфой.
Да надо разбираться в шифоровании.
Передо мной к сожалению не стоял вопрос шифрования, но я видел этот раздел в msdn, когда копался по ссылке sua.

Я написал только потому что увидел фразу:
При попытках его изменить программно, пишет то он только для чтения
т.к. знаю что это не так и файл со строкой соединения можно менять непосредственно в момент выполнения программы.

Если будет тоже самое только с шифрованием - поделись плиз!
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
12.03.2012, 11:23  [ТС] 11
Ладно, откинем все непонятки, вот конфиг
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="__.My.MySettings.ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\!\Data\*.mdb;Persist Security Info=True;Jet OLEDB:Database Password=1"
Это с паролем и все нормально работает, если при создании подключения Persist Security Info=false
то файл выглядит так

XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="__.My.MySettings.ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\!\Data\*.mdb;Persist Security Info=false"
И естественно при открытии подключения пароль не верен, вопрос как привязать еще и пароль но в самом приложении, например
VB.NET
1
Dim connStr As String = ConfigurationManager.ConnectionStrings("__.My.MySettings.ConnectionString").ConnectionString & ("Jet OLEDB:Database Password=1")
ни так, ни каким другим макаром не катит...
Кипит котелок)
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
13.03.2012, 19:55  [ТС] 12
UP(
Неужели никто таким не заморачивался...
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
19.03.2012, 16:58 13
Цитата Сообщение от DM_AND Посмотреть сообщение
Неужели никто таким не заморачивался
Сильно долго проблемой не увлекался, но пока-что есть такая возможность
C#
1
Properties.Settings.Default.PropertyValues["ConnstringName"].PropertyValue = "NewValueConString";
Таким образом можно изменить строку подключения на время работы приложения, что, как я понял, тебе и нужно.
К сожалению сохранить строку так и не удалось (на метод Save не реагирует), предполагаю, что из-за Scope=Application
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
19.03.2012, 18:11  [ТС] 14
На vb не катит...
Properties is not declared, ссылка на System.Configuration есть.
На vb такая строка, проходит
VB.NET
1
My.MySettings.[Default].PropertyValues("TMCConnectionString").PropertyValue = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\!\*.mdb;Jet OLEDB:Database Password=*"
Строка меняется, проверяю после загрузки. Но базу ищет по старому пути.
Может еще какую ссылку нужно?
Т.е. класс датасета берет строку не с Setting?
VB.NET
1
Me.*TableAdapter.Fill(Me.*DataSet.SPR)
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
19.03.2012, 19:34 15
DM_AND, а у тебя DataSet инициализируется до того, как ты меняешь строку или после?
0
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
19.03.2012, 19:46  [ТС] 16
Цитата Сообщение от nio Посмотреть сообщение
DM_AND, а у тебя DataSet инициализируется до того, как ты меняешь строку или после?
После...
Не понятно почему у меня на Properties ругается...
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
19.03.2012, 19:48 17
Цитата Сообщение от DM_AND Посмотреть сообщение
После...
проверь строку подключения у адаптера
1
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
19.03.2012, 20:05  [ТС] 18
Цитата Сообщение от nio Посмотреть сообщение
проверь строку подключения у адаптера
У адаптера, строка не изменилась, осталась прежняя

Изменил
VB.NET
1
Me.*TableAdapter.Connection.ConnectionString = ("Provider....
Изменился, но базу ищет в старом каталоге(
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
19.03.2012, 20:38 19
Цитата Сообщение от DM_AND Посмотреть сообщение
но базу ищет в старом каталоге(
Не может такого быть, чудес не бывает, ищи проблему в своем коде, скорее всего ты присваиваешь адаптеру строку позднее чем следует
1
1504 / 1052 / 146
Регистрация: 01.10.2009
Сообщений: 3,537
Записей в блоге: 1
19.03.2012, 20:57  [ТС] 20
Цитата Сообщение от nio Посмотреть сообщение
Не может такого быть, чудес не бывает, ищи проблему в своем коде, скорее всего ты присваиваешь адаптеру строку позднее чем следует
Нио, прощу прощения, с путем запутался, да, спасибо большое за наводку, как сам не проверил.
Прогресс есть,
VB.NET
1
2
3
4
'ран-тайм меняю строку 
 My.MySettings.[Default].PropertyValues("*ConnectionString").PropertyValue = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\!\*.mdb;Jet OLEDB:Database Password=*"
'на форме меняю адаптер, согласно строки из setting
Me.*TableAdapter.Connection.ConnectionString = (My.Settings.*СonnectionString.ToString)
А как теперь это все соединить во едино, что бы не прописывать на каждой форме адаптерам строку из setting!?
0
19.03.2012, 20:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2012, 20:57
Помогаю со студенческими работами здесь

Как сделать чтобы текст введённый в richTextBox сохранялся в Settings.settings?
Сценарий Открыл форму 1-ый раз. Ввёл в &quot;richTextBox1&quot; текст &quot;Текст 1&quot; Закрыл форму. Открыл...

Почему не сохраняются значения в settings.settings или как хранить параметры в самой программе?
В общем, храню пользовательские параметры в файле Properties-&gt;Settings.setting проекта win forms...

Левый хеш в имени папки для Settings.settings
ЧТо это в конце ?? и как его убрать ?

Нельзя привести setting из Settings.settings к типу FileSystemInfo
Доброго дня форумчанам :) Столкнулся со следующей проблемой: при попытке сохранить адрес...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru