SQLiteViewer 2.11.1

Простой плагин для TC для просмотра файлов баз данных SQLite3. Поддерживаются расширения *.db, *.db3, *.sqlite, *.sqlite3 и *.fossil.

Поддерживаются файлы до 2Тб, библиотека sqlite3.dll не нужна.
Поддерживаются типы данных, описанные в этом документе:
http://www.sqlite.org/datatype3.html

Про автоматическое создание файлов при просмотре некоторых баз данных (и открытие таких баз из источников только для чтения):
http://www.sqlite.org/tempfiles.html#walfile
http://www.sqlite.org/wal.html

Detect-строку можно изменить для открытия баз SQLite3 с различными расширениями:
MULTIMEDIA&([0]="S"&[1]="Q"&[2]="L"&[3]="i"&[4]="t"&[5]="e"&[6]=" "&[7]="f"&[8]="o"&[9]="r"&[10]="m"&[11]="a"&[12]="t"&[13]=" "&[14]="3")

Замечания.
Сортировка по заголовкам - это новая выборка из таблицы.
Рекомендуется установить ограничение на количество записей, получаемых из таблицы. PacketRecords (в ini) или/и UseRowLimit (в настройках/ini).
Плагин создаёт функцию "lowerU" для перевода получаемых значений в нижний регистр (в строчные буквы) с поддержкой юникода. Пример: select * from table where loweru(column) like "%текст%".


Условия распространения
Это программное обеспечение (ПО) распространяется по принципу "КАК ЕСТЬ" ("AS IS") и является бесплатным для некоммерческого использования. Автор не дает никаких гарантий по работе этого ПО и не несет никакой ответственности при его использовании.


История изменений

Версия 1.0:
 * публичная версия.

Версия 1.5:
 * улучшена поддержка файлов баз данных SQLite;
 + новое расширение в DetectString: sqlite (требуется переустановка плагина или задание его вручную);
 * исправление ошибок.

Версия 1.6:
 + авторазмер колонок при открытии таблицы (ограничение на первую 1000 записей для увеличения скорости);
 + авторазмер колонки по двойному щелчку на разделителе колонок;
 + сортировка по щелчку по заголовку колонки;
 + информация о таблице;
 * разные исправления.

Версия 1.6.1:
 * исправления в интерфейсе;
 * разные исправления.

Версия 1.6.2:
 + текущая запись может быть скопирована в Буфер обмена в виде нескольких строк.

Версия 1.7:
 + некоторые поля BLOB могут быть показаны как текст;
 + панель списка таблиц (включается в ini-файле);
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   ShowTablesPanel=0 - вкл/выкл панель таблиц (по умолчанию 0)
   BlobAsText=1 - вкл/выкл отображение BLOB-полей как текста (по умолчанию 1)
   BlobAsTextLimit=150 - лимит символов для отображения BLOB-полей (20..255, по умолчанию 150);
 * разные исправления.

Версия 1.7.5:
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   FixDrawErrors=1 - в некоторых случаях устраняет мерцание
   FixScrollError=0 - не даёт перескакивать к первой колонке при прокрутке за бегунок
   FixDrawScrollError=0 - при установке FixScrollError=1 должен в некоторых случаях устранять мерцание (на медленных компьютерах - медленно)
   GridOddRowOtherColor=1 - у чётной строки другой цвет
   GridOddRowColor=$00F4F4F4 - цвет чётной строки.

Версия 1.7.6:
 * может быть использован файл lsplugin.ini для чтения настроек.

Версия 1.8:
 * обновлён движок SQLite;
 * базы данных сейчас открываются в режиме "только для чтения" (PRAGMA query_only);
 * исправлен показ таблиц с пробелом в имени;
 + двойной щелчок по записи открывает окно её просмотра (Record View);
 * BlobAsTextLimit может быть увеличен до 2000 знаков (20..2000, по умолчанию 150);
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   ShowTablesCombobox=1 - вкл/выкл выпадающий список таблиц (по умолчанию 1)
   StringLengthLimit=255 - лимит символов для отображения строк (20..2000, по умолчанию 255)
  ! Предупреждение. После увеличения лимита символов для Blob полей (да и для строковых) большие базы могут не открываться из-за нехватки памяти.
   SkipSystemTables=0 - не добавлять в список таблиц системные таблицы (начинаются на "sqlite_") (по умолчанию 0);
 * разные исправления.

Версия 1.8.1:
 * разные исправления.

Версия 1.8.2:
 * обновлён движок SQLite;
 * плагин перекомпилирован в Delphi XE4 для улучшения стабильности 64-битной версии;
 + информация о таблице БД в формате SQL;
 * ошибочная сортировка после клика по заголовку таблицы правой кнопкой, а затем в любом её месте;
 * разные исправления.

Версия 1.8.3:
 * обновлён движок SQLite;
 + поддержка таблиц, созданных с фразой "WITHOUT ROWID" (https://www.sqlite.org/withoutrowid.html).

Версия 1.8.4:
 * обновлён движок SQLite;
 + новые расширения в DetectString: sqlite3 и fossil (требуется переустановка плагина или задание их вручную).

Версия 1.8.5:
 * обновлён движок SQLite;
 + простой фильтр по всем полям таблицы с использованием оператора LIKE (стандартный диалог поиска TC (без опций) - F7).

Версия 1.8.6:
 * обновлён движок SQLite;
 * сейчас фильтр для юникодных слов не чувствителен к регистру и может использовать опции из стандартного диалога поиска (F7);
 + простой диалог фильтрации.
 
Версия 1.8.7:
 * обновлён движок SQLite;
 + опции фильтрации "Not Contain" (Не содержит) и "Just Not Null" (Только непустые поля).
 
Версия 1.9.0:
 * обновлён движок SQLite;
 + добавлена поддержка представлений (VIEW);
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   AddVIEWs=1 - добавлять представления в список таблиц;
 + диалог настройки (пункт меню Setup...);
 * разные исправления.

Версия 1.9.1:
 * обновлён движок SQLite;
 + показ номера текущей записи (включается в настройках);
 * разные исправления.

Версия 1.9.2:
 * обновлён движок SQLite;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   DatabaseReadOnly=1 - открывать базу данных в режиме только для чтения (по умолчанию 1);
 * разные исправления.

Версия 1.9.3:
 * исправлено поведение кнопки TAB в главном окне плагина в 64-битном TC;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   SpecialCheckQuery=0 - если база данных открыта в режиме возможности изменения (DatabaseReadOnly=0) и запрос не начинается с "select", то происходит переоткрытие таблицы или базы данных после запроса (по умолчанию 0).

Версия 1.9.5:
 * обновлён движок SQLite;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   FixDateTimeField=1 - попытка правильно показывать поля DATETIME (по умолчанию 1).

Версия 1.9.6:
 * обновлён движок SQLite;
 + возможность удаления записей если база данных открыта в режиме возможности изменения (DatabaseReadOnly=0).

Версия 1.9.6.1:
 * обновлён движок SQLite;
 + сортировка имен таблиц (представления сортируются отдельно) (включается в настройках).

Версия 1.9.6.2:
 * исправлена сортировка строк.

Версия 1.9.6.3:
 * обновлён движок SQLite;
 * разные исправления.

Версия 1.9.6.4:
 * разные исправления.

Версия 1.9.6.5:
 + ограничение на количество записей при загрузке таблицы (включается в настройках);
 * разные исправления.

Версия 1.9.6.6:
 * BlobAsTextLimit может быть увеличен до 20000 знаков (20..20000, по умолчанию 150). Не рекомендуется устанавливать большие значения!;
 * StringLengthLimit может быть увеличен до 20000 знаков (20..20000, по умолчанию 255). Не рекомендуется устанавливать большие значения!;
 * устранена небольшая утечка памяти.

Версия 1.9.6.7:
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   FontName= - название шрифта,
   FontSize= - размер шрифта;
 * разные исправления.

Версия 2.0:
 * полностью изменено поведение отображения длинных строк и blob-полей в режиме текста;
 * множество изменений в отображении табличного представления;
 * при FixDateTimeField=1 дополнительно делается попытка определить дату/время для полей типа DATE и формата REAL;
 + сортировка по нескольким полям при щелчке по заголовкам с зажатой клавишей Ctrl (снять сортировку можно так же с зажатой клавишей Ctrl);
 + запись может отображаться в несколько строк; 
 + панель с предпросмотром текста/изображений выбранной ячейки (текст дополнительно проверяется на кодировку UTF8);
 + простой диалог поиска по Ctrl-F (далее можно искать по F3);
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   CreateFakeFTS=0 - создаёт токены FTS и ICU при открытии базы (только для подавления ошибок в соответствующих таблицах, может приводить к другим ошибкам!);
 * разные исправления.
 
Версия 2.1:
 * сортировка с зажатой клавишей Ctrl сейчас происходит после отпускания кнопки Ctrl;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   GetAllRecordsCount=0 - подсчитывать количество записей;
   GetAllRecordsCountForce=0 - принудительно подсчитывать количество записей в таблице;
   PacketRecords=-1 - загружать данные пакетами (512 или 1024 рекомендуемый минимум);
   AskGotoEnd=1 - при пакетной загрузке выдаёт запрос на переход на последнюю запись по Ctrl-End (работает при включении GetAllRecordsCountN);
   ShowSearchPanel=0 - показывать панель поиска;
   AllowSearchPanel=0 - разрешить показывать панель поиска по Ctrl-Shift-F;
   DrawMultilineTextAsEditControl=0 - переносить строки в многострочных полях принудительно (могут быть проблемы отрисовки);
   CheckFieldIsURL=0 - проверять поля на URL (1-я запись, http:// или https://) при загрузке таблицы;
   FixDateTimeFieldDefault=0 - по умолчанию поля время/дата будут текстовыми;
   PreviewRTF=0 - предпросмотр RTF;
   PreviewDBGraphic=0 - при предпросмотре изображений проверять специальный заголовок (Paradox graphic BLOB);
   PreviewJPEGScale=1 - предпочитаемый размер JPEG при предпросмотре для ускорения загрузки (0 - как есть, 1 - размер экрана, 2 - половина экрана, 3 - четверть экрана, 5 - 1/8 экрана);
 * многочисленные исправления.

Версия 2.1.1:
 * изменения в отрисовке чётных и нечётных строк (в Настройках);
 * в окне просмотра записи Memo заменены на RichEdit;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   * AskGotoEnd=2 - теперь при пакетной загрузке выдаёт запрос на переход на последнюю запись по Ctrl-End вне зависимости от включения опций GetAllRecordsCountN;
   OldGetData=0 - получение текстовых данных из таблиц как в версиях 1.x (есть в Настройках);
   GridContrastLines=0 - контрастные разделительные линии в гриде при включенной поддержке Визуальных тем в Windows (есть в Настройках);
   GridHorizontalLines=1 - горизонтальные разделительные линии вкл/выкл (есть в Настройках);
   DrawNullText=0 - текст (null) в пустых ячейках (есть в Настройках);
   GridColor= - цвет грида (по умолчанию Цвет окна);
   GridDrawFocusRect=1 - стандартная рамка в текущей активной ячейке (есть в Настройках);
   GridRowHighlight=1 - выделение цветом всей строки (есть в Настройках);
 * разные исправления.

Версия 2.1.1.1:
 * исправления в отрисовке верхней и нижней панелей при включенной Классической теме Windows;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   * SkipSystemTables=1 - теперь по умолчанию системные таблицы в список не добавляются;
   AddMasterTable=0 - при отключенной опции SkipSystemTables также добавит в список таблицу sqlite_master;
 * разные исправления.

Версия 2.2 Beta:
 * обновлён движок SQLite;
 * базы данных сейчас открываются в реальном режиме "только для чтения", а не просто выполняют "PRAGMA query_only" (DatabaseReadOnly=1 в ini);
 + простой экспорт в csv, xlsx, html, rtf;
 + подсветка синтаксиса SQL на вкладке "SQL" окна Table Info;
 + просмотр следующей/предыдущей записи в окне Record View;
 * разные исправления.

Версия 2.2.1:
 * при опции CreateFakeFTS=1 сейчас так же создаёт токен FTS5 и активирует модуль csv;
 * разные исправления.

Версия 2.3:
 * обновлён движок SQLite (3.23.1);
 * разные исправления.

Версия 2.4 Beta:
 * исправления и улучшения при удалении записей;
 + фильтрация в колонке по значению ячейки по Alt-Click, снять - Alt-Click по такому же значению в любой колонке или из меню (не совместимо с фильтром панели поиска);
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   AllowColumnFilter=1 - разрешить фильтрацию в колонке по Alt-Click;
   ExportCsvCommaSeparated=0 - при экспорте в CSV разделитель запятая;
   ExportCsvTitle=1 - экспортировать заголовки в CSV;
   ProcessMalformedTables=0 - открывать повреждённые таблицы (может приводить к ошибкам!);
   OpenEmptyDatabase=0 - открывать базы без таблиц (только при SkipSystemTables=0 и AddMasterTable=1);
 * разные исправления.

Версия 2.4.1 Beta:
 * исправление ошибок.

Версия 2.4.2 Beta:
 * изменения в извлечении данных из некоторых полей, в частности BLOB;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   * CheckFieldIsURL=0 - теперь количество записей (0-20), поля которых проверяются на URL (http:// или https://) при загрузке таблицы;
   * FixDateTimeField=1 - попытка правильно показывать поля DATETIME, DATE, TIME, TIMESTAMP: 2 - дополнительные проверки, 3 - как текст (по умолчанию 1);
 * разные исправления.

Версия 2.4.3 Beta:
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   EmptyDefinedType=0 - тип данных поля, для которого тип данных не установлен ("пустой"): 0 - автоматически, 1 - текст, 2 - Blob (есть в Настройках);
   PreviewTextBlobConvert=0 - дополнительные преобразования данных при конвертации из Blob в текст (есть в Настройках);
   PreviewTextBlobConvertMaxLen= - максимальный размер данных для конвертации (-1 - без ограничений) (есть в Настройках);
 * разные исправления.

Версия 2.4.3.1:
 * разные исправления.

Версия 2.5:
 * обновлён движок SQLite (3.26.0);
 * разные исправления.

Версия 2.6:
 * обновлён движок SQLite (3.27.2).

Версия 2.6.0.1:
 + предпросмотр TIFF с помощью WIC;
 * разные исправления.

Версия 2.6.0.2:
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   DrawTableTypeColors=3 - раскрашивать имена таблиц в списках по типу (сумма значений: 1 - выпадающий список, 2 - список);
 * разные исправления.

Версия 2.6.0.3:
 * исправления в предпросмотре определённых символов в тексте.

Версия 2.6.0.4:
 * разные исправления.

Версия 2.6.0.5:
 + опция для показа текста в кодировке ANSI в текущей таблице;
 * разные исправления.

Версия 2.6.0.6:
 * разные исправления.

Версия 2.6.1:
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   PreviewFontName= - название шрифта для предпросмотра,
   PreviewFontSize= - размер шрифта для предпросмотра,
   PreviewHeight=0 - высота окна предпросмотра (проценты от 10 до 80),
   RecordViewScrollToField=1 - при просмотре записи в отдельном окне пытаться перейти к конкретному полю,
   ShowOpenError=0 - показывать некоторые ошибки при открытии базы,
   RereadINI=0 - перечитывать ini при каждом старте плагина;
 * разные исправления.

Версия 2.7 Beta:
 * обновлён движок SQLite (3.30.1);
 * разные исправления.

Версия 2.7.1 Beta:
 * диалог фильтра теперь принимает пустые значения;
 * улучшения показа текста в кодировке ANSI в текущей таблице;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   OldGetDataAllowConvert=0 - при включенной опции OldGetData разрешает различные преобразования отображаемых данных, например просмотр в ANSI;
 * разные исправления.

Версия 2.8 Beta:
 * обновлён движок SQLite (3.31.1);
 * разные исправления.

Версия 2.8.1:
 * исправлено конвертирование blob в текст (регрессия с 2.7.1 Beta);
 * разные исправления.

Версия 2.8.2:
 * при выборе из меню "Check Database Integrity" теперь отображается список ошибок; 
 * ручной запрос с зажатой клавишей Shift временно меняет значение опции SpecialCheckQuery на противоположное;
 * при опции CreateFakeFTS=1 сейчас так же активирует модуль RTREE;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   TryOpenLockedAndReadOnly=0 - пытаться открыть заблокированные базы (ошибки SQLite 5 и 14) в режиме только для чтения (https://sqlite.org/uri.html#uriimmutable);
   FixDateTimeFieldExtended=0 - если включено, то при FixDateTimeField=2 и при типе поля float, и при пустом проверяемом поле, оно определяется как дата;
 * разные исправления.

Версия 2.8.2.1:
 + правый клик на кнопке "Query" показывает окно ввода многострочного запроса;
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   AllowRightClickQueryButton=3 - правый клик на кнопке "Query" показывает окно ввода многострочного запроса (сумма значений: 1 - разрешить, 2 - автоматически показать кнопку со стрелкой вниз);
   OpenErrorSkip= - при включенной опции ShowOpenError не показывать сообщения при определённых ошибках (список через запятую, например 26);
 * разные исправления.

Версия 2.9:
 * обновлён движок SQLite (3.32.1).

Версия 2.9.1:
 * обновлён движок SQLite (3.32.2).

Версия 2.9.2:
 * обновлён движок SQLite (3.32.3);
 + функции контентного плагина (бета).

Версия 2.9.3:
 * обновлён движок SQLite (3.33.0);
 * при опции CreateFakeFTS=1 сейчас так же активирует модули DECIMAL и IEEE754.

Версия 2.10.1 Beta:
 * ограничение на количество записей, получаемых из таблицы, сейчас включено по умолчанию;
 * опция показа номера записи ("Show Record Number") сейчас включена по умолчанию, добавлена опция для показа номера в строке состояния;
 * плагин может загружать таблицы/колонки, в именах которых содержатся двойные кавычки, например "test", te"st (не везде исправлено);
 * автоинкрементные поля сейчас представлены 64-битным значением (ftLargeInt), так как в Delphi поля ftAutoInc 32-битные и данные могут теряться; 
 + SQLiteViewer.ini для ручной настройки:
   [SQLiteViewer]
   AutoIncCheckDelta=0 - положительные значения для проверки автоинкрементного поля и установки его в ftAuoInc (рекомендуются большие значения);
 * разные исправления.

Версия 2.10.2:
 * исправления.

Версия 2.11:
 * обновлён движок SQLite (3.34.0).

Версия 2.11.1:
 * исправления.


---
Пожелания и сообщения об ошибках приветствуются!
ProgMan13, (ProgMan13@mail.ru)