app.config

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

app.config

Сообщение sergey-911 » 27.05.2012 (Вс) 18:01

Доброго времени суток уважаемые.
Как программно поменять строку подключения, расположенную в "app.config"?
:oops:
Вложения
app.jpg
app.jpg (77.95 Кб) Просмотров: 3984
С уважением, Сергей.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.05.2012 (Вс) 21:44

Может проще в настройки положить тогда?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: app.config

Сообщение FireFenix » 27.05.2012 (Вс) 22:22

sergey-911 писал(а):Как программно поменять строку подключения, расположенную в "app.config"?
:oops:

Программно исправить файл app.config содержащийся в проекте?
В текущей программе изменить загруженную конфигурацию?
В скомпилированном проекте изменить файл app.config?
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: app.config

Сообщение sergey-911 » 28.05.2012 (Пн) 6:57

FireFenix писал(а):
sergey-911 писал(а):Как программно поменять строку подключения, расположенную в "app.config"?
:oops:

Программно исправить файл app.config содержащийся в проекте?
В текущей программе изменить загруженную конфигурацию?
В скомпилированном проекте изменить файл app.config?


Ну да, FireFenix, что-то в этом духе.

На использование визуальных компонентов меня настроил ролик на youtube.
В нем при помощи визуальных компонентов можно быстро создать надежное приложение, нужно только чуть чуть доработать. Вот, только, про локализацию там ни слова.
Обычно я все настройки хранил в *.ini файле, строку подключения там же, но в зашифрованном виде. А весь код писал ручками. Хочу попробовать предложеннную методику, вот, только не знаю, что делать со строкой подключения. Чтобы все эти компоненты работали, ее нужно хранить в файле app.config. Но есть вероятность, что заказчик захочет поменять местоположение БД, или перейти на другую СУБД.
Вот именно для этого мне нужна возможность править app.config файл в коде программы. К примеру, строка подключения хранится в *.ini файле. При запуске программы, приложение копирует строку подключения из *.ini файла в app.config файл. Как сделать это программно? Не могу обратиться к app.config из кода. Неужели единсттвенный выход - это править файл Приложение.exe.Config? Это не самый лучший вариант. Не спорю, возможно иду не в том направлении. Но, надеюсь, что вы, дорогие форумчане меня поправите. К примеру, может нужно править подключение к бд в обозревателе серверов...
И все же, как в коде обратиться к файлу app.config?
С уважением, Сергей.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 28.05.2012 (Пн) 7:38

Потыкай ConfigurationManager из System.Configuration (сначала надо в Referencies добавить System.Configuration).
И вообще, не надо использовать одновременно .ini и .config.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re:

Сообщение sergey-911 » 28.05.2012 (Пн) 8:48

Qwertiy писал(а):Потыкай ConfigurationManager из System.Configuration (сначала надо в Referencies добавить System.Configuration).
И вообще, не надо использовать одновременно .ini и .config.



Почему не нужно использовать одновременно *.ini и *. Config?
System.Configuration.ConfigurationManager у меня выдает ошибку. Почему - не знаю. В приложении использую net framework 2.
С уважением, Сергей.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: app.config

Сообщение FireFenix » 28.05.2012 (Пн) 11:07

sergey-911 писал(а):
FireFenix писал(а):
sergey-911 писал(а):Как программно поменять строку подключения, расположенную в "app.config"?
:oops:

Программно исправить файл app.config содержащийся в проекте?
В текущей программе изменить загруженную конфигурацию?
В скомпилированном проекте изменить файл app.config?


Ну да, FireFenix, что-то в этом духе

Что да? это был вопрос к тебе - какой из вариантов исправления тебе нужен? ...

sergey-911 писал(а):На использование визуальных компонентов меня настроил ролик на youtube.
В нем при помощи визуальных компонентов можно быстро создать надежное приложение, нужно только чуть чуть доработать. Вот, только, про локализацию там ни слова.

В обще-то при помощи визуальных компонентов можно сделать убогий каркас, который использует LINQ для доступа к СУБД, что хоть и ускоряет разработку, но скрывает многие вещи которые нужно учитывать.


sergey-911 писал(а):Обычно я все настройки хранил в *.ini файле, строку подключения там же, но в зашифрованном виде. А весь код писал ручками. Хочу попробовать предложеннную методику, вот, только не знаю, что делать со строкой подключения. Чтобы все эти компоненты работали, ее нужно хранить в файле app.config. Но есть вероятность, что заказчик захочет поменять местоположение БД, или перейти на другую СУБД.

Изображение
Причём здесь методика, "писать код ручками" и ini файл? а уж тем более зачем его кодировать...

sergey-911 писал(а):Почему не нужно использовать одновременно *.ini и *. Config?

Потому что масло масляное.
Зачем использовать файл .config если есть и так файл .ini. Зачем конфигурацию хранить в 2х разных файлах?
.config представляет собой обычный XML, который можно распарсить XML библиотеками. Я бы сказал что лучше бы использовать конфиг xml своего производства.

sergey-911 писал(а):System.Configuration.ConfigurationManager у меня выдает ошибку. Почему - не знаю. В приложении использую net framework 2.

Для этого есть сообщение об ошибке, отладчик, среда разработки и гугл, а так же интеллект.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: app.config

Сообщение sergey-911 » 28.05.2012 (Пн) 19:18

FireFenix писал(а):
sergey-911 писал(а):
FireFenix писал(а):Программно исправить файл app.config содержащийся в проекте?
В текущей программе изменить загруженную конфигурацию?
В скомпилированном проекте изменить файл app.config?


Ну да, FireFenix, что-то в этом духе

Что да? это был вопрос к тебе - какой из вариантов исправления тебе нужен? ...


FireFenix, мне нужно, чтобы и в проекте и в скомпилированном проекте, при перемещении расположения БД можно было поправить строку подключения. Но дело в том, что корректно строку подключения нужно поправить в App.config (в случае с проектом, можно править прям в самом App.config, в случае с откомпилированным проектом – в файле Телефон.exe.Config).


FireFenix писал(а):
sergey-911 писал(а): На использование визуальных компонентов меня настроил ролик на youtube.
В нем при помощи визуальных компонентов можно быстро создать надежное приложение, нужно только чуть чуть доработать. Вот, только, про локализацию там ни слова.

В обще-то при помощи визуальных компонентов можно сделать убогий каркас, который использует LINQ для доступа к СУБД, что хоть и ускоряет разработку, но скрывает многие вещи которые нужно учитывать.

Может и так FireFenix, но данный подход никто не отменял. Думаю, что в Microsoft работают не глупые люди, и если они предлагают работать с использованием визуальных компонентов – значит им можно доверять. Чистое кодирование тоже, никто не отменял.



FireFenix писал(а):
sergey-911 писал(а):Обычно я все настройки хранил в *.ini файле, строку подключения там же, но в зашифрованном виде. А весь код писал ручками. Хочу попробовать предложенную методику, вот, только не знаю, что делать со строкой подключения. Чтобы все эти компоненты работали, ее нужно хранить в файле app.config. Но есть вероятность, что заказчик захочет поменять местоположение БД, или перейти на другую СУБД.

Изображение
Причём здесь методика, "писать код ручками" и ini файл? а уж тем более зачем его кодировать...

FireFenix, чего такого я здесь написал, что ты так злобно отреагировал? Если раньше в проекте у меня из компонентов был только грид, все остальное я писал руками, подключение, обновление и тп. То теперь пытаюсь использовать как можно меньше кода для этого и как можно больше визуальных компонентов. А чтобы они все нормально работали, нужно, чтобы App.config содержал нужную строку подключения. Насколько я понимаю, логин и пароль тоже в данной строке должен присутствовать, без всяких шифровок, что не допустимо.



FireFenix писал(а):
sergey-911 писал(а):Почему не нужно использовать одновременно *.ini и *. Config?

Потому что масло масляное.
Зачем использовать файл .config если есть и так файл .ini. Зачем конфигурацию хранить в 2х разных файлах?
.config представляет собой обычный XML, который можно распарсить XML библиотеками. Я бы сказал что лучше бы использовать конфиг xml своего производства.


FireFenix, конфиг xml своего производства использовать не получится, т.к. App.config строго структурированный файл, в котором описывается подключение к БД, которое используют остальные компоненты.



FireFenix писал(а):
sergey-911 писал(а):System.Configuration.ConfigurationManager у меня выдает ошибку. Почему - не знаю. В приложении использую net framework 2.

Для этого есть сообщение об ошибке, отладчик, среда разработки и гугл, а так же интеллект.

FireFenix, ошибка содержания, что такого типа не существует.


В общем я набросал рыбу работы с таблицей, выкладываю во вложенном файле. Может, чего посоветуете уважаемые форумчане. Также обращаю внимание на ролик на youtube.
Вложения
Телефон.rar
Рыба работы с таблицей
(170.98 Кб) Скачиваний: 192
С уважением, Сергей.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 28.05.2012 (Пн) 22:31

sergey-911 писал(а):FireFenix, чего такого я здесь написал, что ты так злобно отреагировал?

Чего же там злобного-то?

sergey-911 писал(а):FireFenix, конфиг xml своего производства использовать не получится, т.к. App.config строго структурированный файл, в котором описывается подключение к БД, которое используют остальные компоненты.

Там есть секция, в которую можно поместить любые параметры. ConfigurationManager предназначен для их использования.
Зачем нужен самописный xml, когда есть работающий самописный ini?

sergey-911 писал(а):
Код: Выделить всё
'Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Users\Sergey\Documents\Visual Studio 2010\Projects\Телефон\ZapKniga.mdb""

Ну ты даёшь... " - это xml'ное представление для ".

sergey-911 писал(а):"C:\Users\Sergey\Documents\Visual Studio 2010\Projects\Телкфон\ZapKniga.mdb"

Да и это тоже. Действительно такой путь?

sergey-911 писал(а):ошибка содержания, что такого типа не существует.

А для чего я по-твоему написал
Qwertiy писал(а):сначала надо в Referencies добавить System.Configuration

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: app.config

Сообщение sergey-911 » 30.05.2012 (Ср) 0:26

Всем спасибо, особенно Qwertiy . :D
Здесь нашел функцию по С#, немного переделал, вот что получилось
Код: Выделить всё
Public Function ChangeConfigValue(ByVal name As String, ByVal value As String)
        Try
            Dim fileMap As System.Configuration.ExeConfigurationFileMap = New System.Configuration.ExeConfigurationFileMap()
            fileMap.ExeConfigFilename = AppDomain.CurrentDomain.BaseDirectory & "App.config"
            Dim config As Configuration = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None)

            config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            config.ConnectionStrings.ConnectionStrings(name).ConnectionString = value
            config.Save()

            Return True

        Catch ex As Exception
            Return False
        End Try
    End Function


Запускаем ее:

Код: Выделить всё
        Dim con As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="".\ZapKniga.mdb"";Persist Security Info=True;Jet OLEDB:Database Password=123;"
        Dim b As Boolean = ChangeConfigValue("Телефон.My.MySettings.ZapKnigaConnectionString", con)


Работает. :D
И, конечно, как указал Qwertiy сначала надо в Referencies добавить System.Configuration.

В общем, если долго мучиться - что-нибудь получится.
А помучиться мне придется, чтобы понять и отладить сей механизм. :shock:


То, что получилось - выкладываю.


И вот еще что, где хранится пароль подключения? Я его из App.Config убрал, но все работает, при этом, в файле App.Config и в файле Телефон.vshost.exe.Config после выполнения функции ChangeConfigValue все работает. Если входным параметром поставить пароль не верный = то не срабатывает, логично :shock: Так где же хранится пароть, и может ли его раздобыть пользователь?
Вложения
Телефон.rar
Рабочая версия
(302.89 Кб) Скачиваний: 200
С уважением, Сергей.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 30.05.2012 (Ср) 7:47

Аутентификация Windows?

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re:

Сообщение sergey-911 » 30.05.2012 (Ср) 11:56

Qwertiy писал(а):Аутентификация Windows?

Не, аутентификация не Windows. Есть 1 пользователь с правами админа, все под ним полключаются, а дальше программа раздает права, исходя из логина и пароля каждого пользователя (авторизации в программе). Главное от пользователей скрыть БД и пароль админа (строку подключения). Знаю, это не самый лучший вариант, что авторизация средствами СУБД надежнее и тп... :oops:
С уважением, Сергей.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList