Хранение конфигурационных параметров в базе данных
Модератор: Модераторы
Хранение конфигурационных параметров в базе данных
Здравствуйте. Использую в свое й программе для хранения настроек ini файлы и все хорошо, но был глюк винды и файл пропал, я об этом не знал и у пользователя подставились все значения по дефолту и все данные естественно забивались с неправильными настройками.
Чтобы это исключить думаю хранить параметры программы в самой БД. Использую FireBird 2.5
Нашел проект Дмитрия Лгинова http://www.loginovprojects.ru/index.php ... ibxfbutils с его IBXFBUtils и у него как раз есть то , что по моему мне нужно. Но ничего не нашел по этой тепе на Lazarus
Как лучше хранить настройки программы, да еще и с разделением по пользователям в самой БД? Это реально?
Было бы желательно с примером.
Чтобы это исключить думаю хранить параметры программы в самой БД. Использую FireBird 2.5
Нашел проект Дмитрия Лгинова http://www.loginovprojects.ru/index.php ... ibxfbutils с его IBXFBUtils и у него как раз есть то , что по моему мне нужно. Но ничего не нашел по этой тепе на Lazarus
Как лучше хранить настройки программы, да еще и с разделением по пользователям в самой БД? Это реально?
Было бы желательно с примером.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Запортиться может что угодно, БД - тоже. Суть проблемы с хранением в БД не понял - заводите таблицу users и храните там всё, что писали в ini. Кроме параметров подключения к самой БД, разумеется. А что тут может вызывать проблемы?
Суть в том, что при записи в ini файлы это очень удобно реализовано и не надо тратить время свою на допиливание своей программы на запись вручную.
Вопрос состоит в том, что может я плохо искал и не нашел компонента аналогичного TIniPropStorage в Lazarus для записи в БД
Вопрос состоит в том, что может я плохо искал и не нашел компонента аналогичного TIniPropStorage в Lazarus для записи в БД
А backup ini-файла сделать нельзя? Это по ходу проще и надежнее чем БД. И где гарантия, что баг винды БД не снесет?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
bpg писал(а):Вопрос состоит в том, что может я плохо искал и не нашел компонента аналогичного TIniPropStorage в Lazarus для записи в БД
Такого нет, поскольку он нафиг не нужен. INI-файл - обычный текстовый файл. Сохраняете текст в поле таблицы БД и читаете его в Tinifile или TMemIniFile компонент как TStream.
Да масса вариантов. Начиная от записи ini в поле БД в виде текста и последующего его чтения...
Мне удобнее использовать отдельную таблицу с параметрами вида ключ=значение
Мне удобнее использовать отдельную таблицу с параметрами вида ключ=значение
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
У винды для конфигов есть реестр, по сути то же самое ini, только нужно сначала путь и права доступа указать.
http://wiki.freepascal.org/fcl-registry/ru
http://wiki.freepascal.org/fcl-registry/ru
Использовать БД для сохранения конфигурационных данных имеет положительное и отрицательные свойства
Положительные: не нужно иметь свободное локальное пространство и постоянно его обновлять, следить за актуальностью данных, обобщенные параметры для всех, изменения "на лету".
Отрицательные: необходимость иметь постоянный доступ к БД, иметь прослойку работы с БД, требует более сложного engine софта.
Как правило этим балуются сложные rich системы 1С/SAP/Access и подобные.
Добавлено спустя 3 минуты 31 секунду:
Сейчас в моде скрипт технологии создания визуальных форм. JS/JSON/XML
Положительные: не нужно иметь свободное локальное пространство и постоянно его обновлять, следить за актуальностью данных, обобщенные параметры для всех, изменения "на лету".
Отрицательные: необходимость иметь постоянный доступ к БД, иметь прослойку работы с БД, требует более сложного engine софта.
Как правило этим балуются сложные rich системы 1С/SAP/Access и подобные.
Добавлено спустя 3 минуты 31 секунду:
Сейчас в моде скрипт технологии создания визуальных форм. JS/JSON/XML
У меня сетевая программа. БД сетевая. Можно с любого компа в сети зайти на шару, скачать себе запускаемый файл и начать работать. Причем кросплатформенно.
Поэтому помучившись и набив шишки с ini файлами, спросил то, что спросил.
Уж извините, то только некоторые написали по существу и по делу. Зачем писать рассуждения?
Если есть рецепт подскажите.
Снег Север и WAYFARER - спасибо за ответы. Наверно так и сделаю.
Поэтому помучившись и набив шишки с ini файлами, спросил то, что спросил.
Уж извините, то только некоторые написали по существу и по делу. Зачем писать рассуждения?
Если есть рецепт подскажите.
Снег Север и WAYFARER - спасибо за ответы. Наверно так и сделаю.
-
Kemet
- постоялец
- Сообщения: 241
- Зарегистрирован: 10.02.2010 18:28:32
- Откуда: Временно оккупированная территория
- Контактная информация:
Даже в старом добром FoxPro конфиги, формы и д хранились в бд, чего человека пугать избыточной сложностью.
Просто нужно допилить работу с ini файлом для работы в бд, взять простую схему - хранить как в ini, текст с конфигом построчно, и поле типа записи, ну там группа или строка конфигурации
А еще проще вообще сохранить в конфигурацию из ini в одном поле и и одной строке, просто считать и распарсить через Ini
Просто нужно допилить работу с ini файлом для работы в бд, взять простую схему - хранить как в ini, текст с конфигом построчно, и поле типа записи, ну там группа или строка конфигурации
А еще проще вообще сохранить в конфигурацию из ini в одном поле и и одной строке, просто считать и распарсить через Ini
неизвестно на сколько глубоко там накодил.bpg писал(а):Уж извините, то только некоторые написали по существу и по делу. Зачем писать рассуждения?
Ini имеет "плоскую" структуру.bpg писал(а):Если есть рецепт подскажите.
XML может
Код: Выделить всё
<Form>
<Caption text="Форма1"/>
<Size w=1200 h=300 />
<Controls>
<Button>
<Pos x=800 y=240 />
<Size w=90 h=24 />
<Caption text="Да"/>
</Button>
<Button>
<Pos x=1000 y=240 />
<Size w=90 h=24 />
<Caption text="Нет"/>
</Button>
</Controls>
</Form>JSON же может более компактно
Код: Выделить всё
{ Form:{
Size:{w=1200,h=300},
Caption:"Форма1",
Controls:[
Button:{
Pos:{x=800,y=240},
Size:{w=90,h=24},
Caption:"Да"
},
Button:{
Pos:{x=1000,y=240},
Size:{w=90,h=24},
Caption:"Нет"
}
]
}
}с бд проще работать - особенно в сети. модифицировать настройки можно удаленно. написать админку 1 час работы
У kdv на сайте есть статья "Registry в базе данных" с примерами. Можно взять за основу. Там же "Применение XML в реляционных БД для хранения объектов сложной структуры".
По сабжу, я сделал отдельную табличку настроек, в виде дерева для каждого юзера
По сабжу, я сделал отдельную табличку настроек, в виде дерева для каждого юзера
