Embarcadero сделал доступным новый драйвер FireDAC для базы данных SQLite Encryption Extension (SEE). Загрузка находится в GetIt, и вот некоторые подробности этого решения.
RAD Studio 11 Alexandria, как и предыдущие версии, поставляется с драйвером FireDAC для базы данных SQLite, предлагающим два разных подхода к доставке. Один из вариантов — статическое связывание, то есть компиляция SQLite в двоичный файл приложения путем связывания скомпилированного кода. Второй вариант — это динамическое связывание, то есть использование внешней DLL SQLite. Две альтернативы и их конфигурации для разных платформ подробно описаны по адресу:
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Connect_to_SQLite_database_(FireDAC)
Table of Contents
Шифрование FireDAC SQLite
Версия драйвера FireDAC SQLite со статическим связыванием предлагает поддержку шифрования базы данных с использованием механизма перехвата базы данных (SQLITE_HAS_CODEC), который теперь был удален из последних версий SQLite командой разработчиков баз данных. По этой причине FireDAC по-прежнему поддерживает шифрование SQLite в последней версии SQLite с «функцией». Если вам нужна последняя версия SQLite и не требуется шифрование, вы можете использовать версию DLL.
В дальнейшем планируется отказаться от шифрования FireDAC SQLite или, по крайней мере, предоставить его в качестве устаревшего варианта и перейти на последнюю версию SQLite также для статически скомпилированной версии. Также обратите внимание, что если вы переходите от FireDAC SQLite Encryption к драйверу FireDAC SQLite Encryption Extension (SEE), вы получите другую реализацию шифрования: по этой причине файлы базы данных SQLite не будут совместимы.
Расширение шифрования SQLite (SEE)
Путь вперед с SQLite Encryption от Hwaci (компания, стоящая за SQLite) — это рекомендовать использование SQLite Encryption Extension (SEE), платной версии SQLite. Вы можете узнать больше об этой базе данных по этим ссылкам:
- В вики SQLite SEE есть общая документация
- SQLite SEE Лицензионное соглашение (или EULA)
- Информация о цене и покупке SQLite SEE
Учитывая, что некоторые клиенты запросили поддержку SQLite EE, Embarcadero создал специальный драйвер FireDAC. Обратите внимание, что в лицензионном соглашении указано, что вам следует использовать статическую привязку (но, поскольку я не юрист, см. Подробную информацию в лицензии, указанной выше). Никакая третья сторона, такая как Embarcadero, не имеет права распространять исходный код библиотеки или скомпилированный двоичный код. Таким образом, Embarcadero предоставляет разработчикам исходный код нового драйвера FireDAC, а также несколько сценариев на основе C ++ Builder для компиляции библиотеки. Вам нужно будет собрать и связать две части (код библиотеки и модуль Delphi) вместе в вашей системе разработки — и для этого может потребоваться владение полной RAD Studio, поскольку вам нужно скомпилировать код C ++ и Delphi.
Рассмотрите InterBase ToGo как альтернативу
Прежде чем я перейду к загрузке и практической стороне, обратите внимание, что, в зависимости от ваших целевых платформ и других требований, вы можете рассмотреть возможность использования InterBase ToGo и его поддержки шифрования базы данных в качестве альтернативы SQLite EE — ценовая модель немного отличается, что делает трудно сравнивать напрямую, но я уверен, что отдел продаж Embarcadero поможет вам разобраться.
Скачать драйвер GetIt
Как уже упоминалось, загрузка доступна в виде специального нового пакета GetIt для клиентов с активной подпиской на обновления:
Embarcadero вскоре сделает загрузку доступной также на портале для клиентов. Ниже я прикрепил прочитанный мной этот пакет GetIt с дополнительной информацией.
Файл для чтения драйвера FireDAC SQLite SEE
Это полный текст файла readme в пакете:
Классы обертывания статического API FireDAC SQLite SEE, Copyright 2021 Embarcadero Technologies. Все права защищены.
Использование регулируется лицензионным соглашением RAD Studio 11, см. Https://www.embarcadero.com/products/rad-studio/rad-studio-eula
Расширение шифрования SQLite (SEE) является продуктом компании Hipp, Wyrick & Company, Inc. (Hwaci) и регулируется
лицензией, доступной по адресу https://www.hwaci.com/sw/sqlite/license-see.html
=== Статическая связь.
Это рекомендуемый способ использования SQLite SEE с вашим приложением. Используйте новый модуль FireDAC.Phys.SQLiteWrapper.SEEStat.pas.
Он обеспечивает статическую привязку sqlite3 SEE к приложению. Этот модуль предоставляется клиентам только как файл PAS, потому что
для создания DCU / etc нам нужен sqlite3.obj, на который распространяется лицензионное ограничение SQLite SEE.
Использование:
* Установите FDPhysSQLiteDriverLink.Linkage = slSEEStatic. Это автоматически добавит FireDAC.Phys.SQLiteWrapper.SEEStat в предложение «использует»
*… или включит FireDAC.Phys.SQLiteWrapper.SEEStat вместо FireDAC.Phys.SQLiteWrapper.Stat в предложение использует приложение
* Make FireDAC.Phys.SQLiteWrapper.SEEStat. pas, доступный компилятору
* Скомпилируйте sqlite3 SEE и создайте sqlite3_x86.obj / sqlite3_x64.obj. См. Раздел «Перекомпиляция SQLite SEE» ниже.
* Поместите sqlite3_x86.obj / sqlite3_x64.obj в папку с FireDAC.Phys.SQLiteWrapper.SEEStat.pas
=== Динамическое связывание.
Это подлежит ограничениям на распространение (см. Лицензию Hwaci)
Использование:
* Установить FDPhysSQLiteDriverLink.Linkage = slDynamic
* Установить FDPhysSQLiteDriverLink.SEEKey = ‘xxx’, где ‘xxx’ — это ключ активации SEE.
Подробнее см. В файле распространения SEE «wwwreadme.wiki», глава «Интерфейс 5.0 C»
* Предоставить sqlite3.dll ПОСМОТРЕТЬ версию и сделать ее доступной для приложения FireDAC
=== Что работает, а что нет.
Шифрование FireDAC SQLite (FSE) поддерживает функции, которые SQLite SEE не поддерживает:
* если указан неправильный пароль, FSE вернет «неправильный пароль», SEE всегда возвращает «файл не является базой данных. »
* FSE может возвращать текущий алгоритм шифрования, SEE не может
* список возможных значений параметра определения соединения FireDAC« Encrypt »имеет поддерживаемые FSE значения, а не SEE
Обратите внимание, что существующие базы данных, созданные с использованием шифрования FireDAC SQLite, несовместимы с базами данных SQLite SEE.
Когда вы создадите свое приложение, будет хорошо сначала получить отчеты среды FireDAC, чтобы быть уверенным, что используется «правильный SQLite».
=== Перекомпиляция SQLite SEE
Используйте предоставленный sqlite_compile.bat для создания sqlite3_x86.obj / sqlite3_x64.obj. Перед запуском sqlite_compile.bat обновите его и установите для этих переменных свои фактические значения:
* BDS — установочная папка RAD Studio
* SQLITE_SRC — путь к исходному файлу sqlite