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

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

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

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

Сообщение bpg » 18.09.2018 15:52:45

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

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

Сообщение Снег Север » 18.09.2018 15:57:03

Запортиться может что угодно, БД - тоже. Суть проблемы с хранением в БД не понял - заводите таблицу users и храните там всё, что писали в ini. Кроме параметров подключения к самой БД, разумеется. А что тут может вызывать проблемы?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение bpg » 18.09.2018 17:49:37

Суть в том, что при записи в ini файлы это очень удобно реализовано и не надо тратить время свою на допиливание своей программы на запись вручную.
Вопрос состоит в том, что может я плохо искал и не нашел компонента аналогичного TIniPropStorage в Lazarus для записи в БД
bpg
новенький
 
Сообщения: 36
Зарегистрирован: 28.11.2017 21:23:18

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

Сообщение McLion » 18.09.2018 17:56:49

А backup ini-файла сделать нельзя? Это по ходу проще и надежнее чем БД. И где гарантия, что баг винды БД не снесет?
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

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

Сообщение Снег Север » 18.09.2018 20:17:14

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

Такого нет, поскольку он нафиг не нужен. INI-файл - обычный текстовый файл. Сохраняете текст в поле таблицы БД и читаете его в Tinifile или TMemIniFile компонент как TStream.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение WAYFARER » 18.09.2018 20:18:06

Да масса вариантов. Начиная от записи ini в поле БД в виде текста и последующего его чтения...
Мне удобнее использовать отдельную таблицу с параметрами вида ключ=значение
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 517
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

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

Сообщение serbod » 19.09.2018 10:42:53

У винды для конфигов есть реестр, по сути то же самое ini, только нужно сначала путь и права доступа указать.
http://wiki.freepascal.org/fcl-registry/ru
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

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

Сообщение olegy123 » 19.09.2018 11:36:19

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

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

Добавлено спустя 3 минуты 31 секунду:
Сейчас в моде скрипт технологии создания визуальных форм. JS/JSON/XML
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение bpg » 19.09.2018 14:59:49

У меня сетевая программа. БД сетевая. Можно с любого компа в сети зайти на шару, скачать себе запускаемый файл и начать работать. Причем кросплатформенно.
Поэтому помучившись и набив шишки с ini файлами, спросил то, что спросил.
Уж извините, то только некоторые написали по существу и по делу. Зачем писать рассуждения?
Если есть рецепт подскажите.
Снег Север и WAYFARER - спасибо за ответы. Наверно так и сделаю.
bpg
новенький
 
Сообщения: 36
Зарегистрирован: 28.11.2017 21:23:18

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

Сообщение Kemet » 21.09.2018 08:19:03

Даже в старом добром FoxPro конфиги, формы и д хранились в бд, чего человека пугать избыточной сложностью.
Просто нужно допилить работу с ini файлом для работы в бд, взять простую схему - хранить как в ini, текст с конфигом построчно, и поле типа записи, ну там группа или строка конфигурации
А еще проще вообще сохранить в конфигурацию из ini в одном поле и и одной строке, просто считать и распарсить через Ini
Kemet
постоялец
 
Сообщения: 241
Зарегистрирован: 10.02.2010 19:28:32
Откуда: Временно оккупированная территория

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

Сообщение olegy123 » 21.09.2018 10:44:31

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:"Нет"
       }
    ]
   }
}
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение MaratIsk » 21.09.2018 11:33:30

с бд проще работать - особенно в сети. модифицировать настройки можно удаленно. написать админку 1 час работы
MaratIsk
новенький
 
Сообщения: 93
Зарегистрирован: 20.08.2009 18:15:20

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

Сообщение zoltanleo » 24.09.2018 18:30:51

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

По сабжу, я сделал отдельную табличку настроек, в виде дерева для каждого юзера
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

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

Сообщение bpg » 24.09.2018 19:12:36

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


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 30

Рейтинг@Mail.ru