SQLite for Clarion (Fork)

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

SQLite for Clarion (Fork)

Сообщение Игорь Столяров »

Привет всем !

Имею непреодолимое желание апнуть ископаемый класс SQLite и у меня для этого есть 5 причин:

1. Направление интересное само по себе, а в контексте взаимодействия с Android / Web - незаменимое;
2. Расширены возможности, устранены известные ограничения и проблемы (подозреваю, что добавлены новые);
3. За годы (десятилетия !) накопились всевозможные исправления и доработки в куче разных мест;
4. Как-то хотелось бы вот это вот всё, собрать где-то в одном месте, что бы использовать по назначению;
5. Приглашаю всех кому не пофиг предыдущие пункты к обсуждению и развитию этого свободного проекта.

Буду потихоньку собирать и показывать на примерах решение реальных задач.
Вложения
tSQLite.zip
Версия от 05.02.2023 г.
(724.03 КБ) 91 скачивание
Последний раз редактировалось Игорь Столяров 05 Февраль 2023, 11:28, всего редактировалось 2 раза.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

SQLite for Clarion (Fork)

Сообщение Admin »

DLL здесь https://sqlite.org/2022/sqlite-dll-win3 ... 400100.zip
ну и Libmaker в руки
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

SQLite for Clarion (Fork)

Сообщение Игорь Столяров »

SQLite DLL / LIB добавлю в следующий релиз.
И конечно, для работы с БД нужен DB Browser for SQLite: https://sqlitebrowser.org/
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

SQLite for Clarion (Fork)

Сообщение Admin »

Игорь Столяров писал(а): 03 Февраль 2023, 12:16 И конечно, для работы с БД нужен DB Browser for SQLite: https://sqlitebrowser.org/
Или плагин SQLiteDB для Far Manager. Но не уверен что там редактирование есть
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

SQLite for Clarion (Fork)

Сообщение finsoftrz »

Давно использую старый класс Тейлора, как раз для формирования данных в формате sqlite и размещении их на хостинге и мобильных устройствах. Плюс в том, что можно просто скопировать файл/файлы в этом формате и сразу начать работать с данными в них в вебе или на мобильном устройстве, без дополнительной загрузки, преобразования и т.п. Для этих целей старый класс покрывает потребности, так как работа происходит с помощью sql запросов. Можно развивать эту тему, наподобии работы с json. Например, взаимодействие с кьшками и группами, чтобы не писать запросы вручную. Если есть задачи и свободное время. С другой стороны, sqlite не заменяет tps, так как он не предназначен для многопользовательской работы, связанной с модификацией данных. И имеет свои особенности синтаксиса, поэтому вряд ли его запросы получится безболезненно использовать в других sql серверах.
Недавно общались с разработчиком, тоже из старой школы. Он сделал систему, условно наподобии 1с77. Там визуальный форматер оконных структур и репортов, встроенный редактор кода с подсветкой синтаксиса, интерпретатор скриптов и т.п. Причем скрипты конвертируются из 1с77 без переписывания, в этом основная фишка. База данных на sqlite плюс нечто из серии ip сервера. Пересеклись на том, что он сдеалал недавно на базе этого учетную систему для небольших магазинов. Если кому интересно будет, ссылка http://sfsys.ru Когда разговаривали про простые вещи, отвечал бодро, когда начались сложные, быстро свернул обсуждение. Тем не менее, такие системы интересны сами по себе для общего развития. Вот он убеждал, что база на sqlite хорошо себя показывает на десятке другом пользователей. Про архитектуру базы умолчал. SQLite это просто файлики, к которым обращаемся через синтаксис sql с помощью сишной либы. То есть там, как в tps, может быть в одном файле много таблиц, а можно иметь несколько разных файлов (только обычные транзакции невозможны при их модификации).
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

SQLite for Clarion (Fork)

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Февраль 2023, 14:05 что база на sqlite хорошо себя показывает на десятке другом пользователей
Почему бы и нет ... кому и кобыла невеста (С) 12 стульев. ;)
Но если посмотреть вглубь веков и почитать как и для чего создавался SQLite - то это всего лишь хранение настроек. :)
Именно так он и используется в продуктах мировых гигантов IT, например Microsoft.
И на эту тему будет отдельный релиз tSQLite.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

SQLite for Clarion (Fork)

Сообщение finsoftrz »

Чем не устраивают обычные текстовые ini файлы? Вроде с ними проблем никогда не было. Точнее, было, но крайне редко.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

SQLite for Clarion (Fork)

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Февраль 2023, 14:54 Чем не устраивают обычные текстовые ini файлы
Всем устраивают. Но бывают разные задачи.
Например, когда нужно хранить большие текстовые массивы или графические образы (логотип, схема проезда).
Есть вопросы целостности, например INI файл может быть частично утрачен и как бы нет проблем (что у меня было).
Нужен большой оптимизм, что бы организовать в INI хранение настроек для каждого пользователя из списка.
В INI cложно выполнять групповое изменение настроек, любая операция или запрос - это тупо загрузка всего файла.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

SQLite for Clarion (Fork)

Сообщение Игорь Столяров »

В первом сообщении темы релиз tSQLite от 04.02.2023 г.
------------------------------------------------------------------------
- Устранены помарки (спасибо всем кто подсказал);
- В комплект добавлены DLL / LIB SQLite3;
- Добавлено больше комментариев для методов класса;
- Небольшая турбулентность синтаксиса (правило "IsBlob" заменено на "IsFile");
- Добавлен метод: QueueToTable() - запись произвольного списка в таблицу;
- Обновлён пример.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

SQLite for Clarion (Fork)

Сообщение finsoftrz »

Игорь Столяров писал(а): 03 Февраль 2023, 15:10
finsoftrz писал(а): 03 Февраль 2023, 14:54 Чем не устраивают обычные текстовые ini файлы
Всем устраивают. Но бывают разные задачи.
Например, когда нужно хранить большие текстовые массивы или графические образы (логотип, схема проезда).
Есть вопросы целостности, например INI файл может быть частично утрачен и как бы нет проблем (что у меня было).
Нужен большой оптимизм, что бы организовать в INI хранение настроек для каждого пользователя из списка.
В INI cложно выполнять групповое изменение настроек, любая операция или запрос - это тупо загрузка всего файла.
Хранить графические образы в базе данных - возможно я когда-нибудь пойму, но точно, не в этой жизни.
Если sqlite утрачен, то он утрачен совсем.
У меня у каждого пользователя свой отдельный ini файл, он относительно небольшого размера и к нему обращается (за редким исключением) только один пользователь.
Групповые изменения крайне редки. Например, если админ хочет что-то установить у всех пользователей и это что-то вдруг хранится в ini файле.
Что быстрее, полностью прочитать и потом перезаписать небольшой текстовый файл, или обновить запись в sql, это не однозначный вопрос. В любом случае, это доли секунды.

В sqlite удобно, что все хранится в виде строк переменной длины. Ему пофиг, что написано в декларации полей. Например, объявили строку 100 байт, а записать и прочитать спокойно можно 200.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

SQLite for Clarion (Fork)

Сообщение Игорь Столяров »

finsoftrz писал(а): 04 Февраль 2023, 9:25 Ему пофиг, что написано в декларации полей
То да ! Всегда завидовал коллегам на "нормальных" языках. Объявили TEXT (STRING) и не парятся о его длине. :)
finsoftrz писал(а): 04 Февраль 2023, 9:25 графические образы в базе данных - возможно я когда-нибудь пойму
Да, Вы говорили, в мобильном приложении под Android у Вас для того что бы посмотреть картинку с образцом товара
нужно иметь доступ в сеть, у предприятия должен быть сайт с картинками и собственно загрузить эту картинку с сайта.

Ладно. А предположим нужно обновить на том же сайте пакет с прайс-листом и парой тысяч картинок образцов ?
Папки, архивы, распаковки, проверки соответсвия файлов записям ? А если это простое торговое предприятие без ботана ?
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

SQLite for Clarion (Fork)

Сообщение finsoftrz »

Если я правильно помню, если картинка была подгружена, то она отображается и без наличия сети. Давно оценивал, картинок было много (20-30 тыс). Решено было не загружать все на мобильные девайсы, а подкачивать из сети по мере обращения. Сам список товаров загружается целиком и в дальнейшем работать с ним (просматривать цены, принимать заказы) можно без доступа в интернет.

Обновление на сайте происходит полностью автоматически. Данные в формате sqlite, они сразу используются в том виде, как сформированы. Картинки передаются в виде обычных jpeg, без упаковки, отдельными файлами. Но только те, в которых были изменения с момента последней передачи. В кларионовское приложении пользователю достаточно нажать кнопку. Или это происходит ночью по расписанию, если сервер работает в круглосуточно режиме.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

SQLite for Clarion (Fork)

Сообщение finsoftrz »

То есть концепция такая, что все нужное формируем на стороне кларионовского приложения в готовом виде, а на сайте или мобильном приложении сразу с этим работаем без каких-либо дополнительных телодвижений. Достаточно просто скопировать файлики по ftp. А на мобильном девайсе подгрузить файл прайс по http.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

SQLite for Clarion (Fork)

Сообщение Игорь Столяров »

finsoftrz писал(а): 04 Февраль 2023, 10:47 Достаточно просто скопировать файлики по ftp
Вам и мне - да. :) Особенно если FTP протокол настроен и не банится (как опасный уже большинством провайдеров).
А вот менеджеру Анатолию хотелось бы просто нажать кнопку "Обновить прайс" и не думать об вот этом вот всём. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

SQLite for Clarion (Fork)

Сообщение finsoftrz »

Не понял. Я же написал, что для обновления прайса достаточно нажать кнопку или оно само по расписанию.
Если программа лезет куда-то по ftp, то её может заблокировать брэндмауэр или антивирус. Поэтому можно сказать, что да, в таких случаях надо сделать некоторые телодвижения на компьютере пользователя. Со стороны провайдера проблем не замечал, у меня обмен по ftp на около сотне компьютеров используется. А какая альтернатива для публикации данных на хостинге?
C6/C11, ШВС, tps/btrieve.
Ответить