Хранение конфигурационных параметров в базе данных

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
bpg
новенький
Сообщения: 36
Зарегистрирован: 28.11.2017 20:23:18

Хранение конфигурационных параметров в базе данных

Сообщение bpg »

Здравствуйте. Использую в свое й программе для хранения настроек ini файлы и все хорошо, но был глюк винды и файл пропал, я об этом не знал и у пользователя подставились все значения по дефолту и все данные естественно забивались с неправильными настройками.
Чтобы это исключить думаю хранить параметры программы в самой БД. Использую FireBird 2.5
Нашел проект Дмитрия Лгинова http://www.loginovprojects.ru/index.php ... ibxfbutils с его IBXFBUtils и у него как раз есть то , что по моему мне нужно. Но ничего не нашел по этой тепе на Lazarus
Как лучше хранить настройки программы, да еще и с разделением по пользователям в самой БД? Это реально?
Было бы желательно с примером.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Запортиться может что угодно, БД - тоже. Суть проблемы с хранением в БД не понял - заводите таблицу users и храните там всё, что писали в ini. Кроме параметров подключения к самой БД, разумеется. А что тут может вызывать проблемы?
bpg
новенький
Сообщения: 36
Зарегистрирован: 28.11.2017 20:23:18

Сообщение bpg »

Суть в том, что при записи в ini файлы это очень удобно реализовано и не надо тратить время свою на допиливание своей программы на запись вручную.
Вопрос состоит в том, что может я плохо искал и не нашел компонента аналогичного TIniPropStorage в Lazarus для записи в БД
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

А backup ini-файла сделать нельзя? Это по ходу проще и надежнее чем БД. И где гарантия, что баг винды БД не снесет?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

bpg писал(а):Вопрос состоит в том, что может я плохо искал и не нашел компонента аналогичного TIniPropStorage в Lazarus для записи в БД

Такого нет, поскольку он нафиг не нужен. INI-файл - обычный текстовый файл. Сохраняете текст в поле таблицы БД и читаете его в Tinifile или TMemIniFile компонент как TStream.
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 564
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Да масса вариантов. Начиная от записи ini в поле БД в виде текста и последующего его чтения...
Мне удобнее использовать отдельную таблицу с параметрами вида ключ=значение
Аватара пользователя
serbod
постоялец
Сообщения: 449
Зарегистрирован: 16.09.2016 10:03:02
Откуда: Минск
Контактная информация:

Сообщение serbod »

У винды для конфигов есть реестр, по сути то же самое ini, только нужно сначала путь и права доступа указать.
http://wiki.freepascal.org/fcl-registry/ru
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

Использовать БД для сохранения конфигурационных данных имеет положительное и отрицательные свойства
Положительные: не нужно иметь свободное локальное пространство и постоянно его обновлять, следить за актуальностью данных, обобщенные параметры для всех, изменения "на лету".
Отрицательные: необходимость иметь постоянный доступ к БД, иметь прослойку работы с БД, требует более сложного engine софта.

Как правило этим балуются сложные rich системы 1С/SAP/Access и подобные.

Добавлено спустя 3 минуты 31 секунду:
Сейчас в моде скрипт технологии создания визуальных форм. JS/JSON/XML
bpg
новенький
Сообщения: 36
Зарегистрирован: 28.11.2017 20:23:18

Сообщение bpg »

У меня сетевая программа. БД сетевая. Можно с любого компа в сети зайти на шару, скачать себе запускаемый файл и начать работать. Причем кросплатформенно.
Поэтому помучившись и набив шишки с ini файлами, спросил то, что спросил.
Уж извините, то только некоторые написали по существу и по делу. Зачем писать рассуждения?
Если есть рецепт подскажите.
Снег Север и WAYFARER - спасибо за ответы. Наверно так и сделаю.
Kemet
постоялец
Сообщения: 241
Зарегистрирован: 10.02.2010 18:28:32
Откуда: Временно оккупированная территория
Контактная информация:

Сообщение Kemet »

Даже в старом добром FoxPro конфиги, формы и д хранились в бд, чего человека пугать избыточной сложностью.
Просто нужно допилить работу с ini файлом для работы в бд, взять простую схему - хранить как в ini, текст с конфигом построчно, и поле типа записи, ну там группа или строка конфигурации
А еще проще вообще сохранить в конфигурацию из ini в одном поле и и одной строке, просто считать и распарсить через Ini
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

bpg писал(а):Уж извините, то только некоторые написали по существу и по делу. Зачем писать рассуждения?
неизвестно на сколько глубоко там накодил.
bpg писал(а):Если есть рецепт подскажите.
Ini имеет "плоскую" структуру.
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:"Нет"
       }
    ]
   }
}
MaratIsk
постоялец
Сообщения: 125
Зарегистрирован: 20.08.2009 18:15:20

Сообщение MaratIsk »

с бд проще работать - особенно в сети. модифицировать настройки можно удаленно. написать админку 1 час работы
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

У kdv на сайте есть статья "Registry в базе данных" с примерами. Можно взять за основу. Там же "Применение XML в реляционных БД для хранения объектов сложной структуры".

По сабжу, я сделал отдельную табличку настроек, в виде дерева для каждого юзера
bpg
новенький
Сообщения: 36
Зарегистрирован: 28.11.2017 20:23:18

Сообщение bpg »

Спасибо
Ответить