Приложение sqlite editor. Бесплатная программа SQLiteStudio для редактирования SQLite баз данных. Что конкретно в поддержке SQL может вызвать недоумение

  • Дата: 27.12.2022

Работаете с базами данных SQL? Тогда вам точно пригодится это приложение - с его помощью вы сможете просматривать, редактировать и сохранять базы данных в любых приложениях.

Особенности

SQLite Editor не требует прав супер-пользователя по умолчанию. Но без них он позволит редактировать и сохранять измененные базы данных только тех приложений, которые установлены на MicroSD.

С рут-правами, в свою очередь, вы сможете корректировать базы данных любых приложений - в том числе тех, которые находятся на внутренней памяти.

Программа отлично взаимодействует функционалом файлового менеджера «РутЭксплорер». С его помощью вы сможете удобно открывать базы данных в приложении, просматривая их в каталоге.

Кроме того, файловый каталог позволяет добавлять SQL-файлы в избранные, упрощая их поиск. Здесь же предусмотрена история (она же есть в самом приложении), где находится информация о недавних путях.

Оформление

Программа несет только функциональную нагрузку. Поэтому о красивостях в интерфейсе можно забыть. Главное меню представлено строгими темно-синими и черными цветами.

Простой шрифт и псевдо-объемные иконки - еще несколько особенностей интерфейса.

Кроме того, отсутствует русская локализация. Впрочем, это не мешает знающим пользователям ориентироваться в инструментарии утилиты.

Эта удобная программа станет надежным помощником гиков и продвинутых пользователей, которые хотели бы вносить изменения в приложения прямо на своем мобильном устройстве.

Решил все-таки написать статью про SQLite, в которой хочу обобщить свой 3-х летний опыт использования этой БД под Windows. Вижу, что тема популярная, но информации мало.

Небольшая вводная.

Эта статья не для начинающих программистов.
Она не является учебником по SQL.
Она не агитирует использовать SQLite.
Она не агитирует не использовать SQLite.
Статья написана в виде вопросов от гипотетического новичка в SQLite и ответов на них (поскольку информации очень много и так хоть немного проще ее структурировать).

Что такое SQLite?
SQLite - это встраиваемая кроссплатформенная БД, которая поддерживает достаточно полный набор команд SQL и доступна в исходных кодах (на языке C).

Исходные коды SQLite находятся в public domain, то есть вообще никаких ограничений на использование.

Сайт (с прекрасной документацией на английском): http://sqlite.org

Текущая версия: 3.7.13

SQLite можно скомпилировать самому, но я скачиваю ее уже скомпилированную в виде Windows DLL.

Для собственной сборки обычно скачивают т.н. «amalgamation» ,
т.е. исходники SQLite в виде единого файла на языке C + sqlite3.h.

Чтобы уменьшить размер кода SQlite, выкинув ненужные ништяки, используются всякие DEFINE.

Насколько SQLite популярна?
Кратко: она везде. Как минимум, на любом смартфоне.
Насколько она надежна?
Очень. При выпуске версии она проходит через ряд серьезнейших автоматических тестов (проводится ~ 2 млн тестов), покрытие кода тестами 100% (с августа 2009).
А какие еще инструменты дают разработчики?
Доступна консольная утилита для работы с базами (sqlite3.exe, «a command-line shell for accessing and modifying SQLite databases»).
И все?
Да, от основных разработчиков - все. Однако, другие люди пишут всякие менеджеры и пр.
Лично я так и не нашел идеального и пользуюсь консолью.
Что значит «достаточно полный набор SQL»?
Как известно, в своем развитии SQL устремился в разные стороны. Крупные производители начали впихивать всякие расширения. И хотя принимаются всякие стандарты (SQL 92), в реальной жизни все крупные БД не поддерживают стандартов полностью + имеют что-то свое. Так вот, SQLite старается жить по принципу «минимальный, но полный набор». Она не поддерживает сложные штуки, но во многом соответствует SQL 92.
И вводит некие свои особенности, которые очень удобны, но - не стандартны.
Что конкретно в поддержке SQL может вызвать недоумение?
Нельзя удалить или изменить столбец в таблице (ALTER TABLE DROP COLUMN…, ALTER TABLE ALTER COLUMN…).
Есть триггеры, но не настолько мощные как у крупных RDBMS.
Есть поддержка foreign key, но по умолчанию - она ОТКЛЮЧЕНА.
Нет встроенной поддержки UNICODE (но ее, вообщем, нетрудно добиться).
Нет хранимых процедур.
А что своего хорошего или необычного?
a) каждая запись содержит виртуальный столбец rowid, который равен 64-битному номеру (уникальному для таблицы).
Можно объявить свой столбец INTEGER PRIMARY KEY и тогда этот столбец станет rowid (со своим именем, имя rowid все равно работает).
При вставке записи можно указать rowid, а можно - не указывать (и система тогда вставит уникальный).
Подробности: www.sqlite.org/autoinc.html
b) можно без труда организовать БД в памяти (это очень удобно и чуть позже расскажу подробнее);
c) легко переносить: по умолчанию, БД - это один файл (в кроссплатформенном формате);
d) тип столбца не определяет тип хранимого значения в этом поле записи, то есть в любой столбец можно занести любое значение;
e) много встроенных функций (которые можно использовать в SQL): www.sqlite.org/lang_corefunc.html;
Не понял - что там с типом? Зачем нужен тип столбца тогда вообще?
Тип столбца определяет как сравнивать значения (нужно же их привести к единому типу при сравнении, скажем, внутри индекса).
Но не обязывает заносить значения именно такого типа в столбец. Нечто вроде weak typing.

Допустим, мы объявили столбец как «A INTEGER».
SQlite позволяет занести в этот столбец значения любого типа (999, «abc», «123», 678.525).
Если вставляемое значение - не целое, то SQlite пытается привести его к целому.
Т.е. строка «123» превратится в целое 123, а остальные значения запишутся «как есть».

Так можно вообще не задавать тип столбца?
Очень часто так и делается: CREATE TABLE foo (a,b,c,d) .
А как с архитектурой? Сервера-то нету?
Сервера нету, само приложение является сервером. Доступ к БД происходит через «подключения» к БД (нечто вроде хэндла файла ОС), которые мы открываем через вызов соот-й функции DLL. При открытии указывается имя файла БД. Если такого нету - он автоматически создается.
Допустимо открывать множество подключений к одной и тоже БД (через имя файла) в одном или разных приложениях.
Система использует механизмы блокировки доступа к файлу на уровне ОС, чтобы это все работало
(эти механизмы обычно плохо работают на сетевых дисках, так что не рекомендуется использовать SQlite с файлом на сети).
Изначально SQlite работал по принципу «многие читают - один пишет».
То есть только одно соединение пишет в БД в данный момент времени. Если другие соединения попробуют тоже записать, то словят ошибку SQLITE_BUSY.
Можно, однако, ввести таймаут операций. Тогда подключение, столкнувшись с занятостью БД, будет ждать N секунду прежде, чем отвалиться с ошибкой SQLITE_BUSY.
И как быть?
Либо одно подключение и все запросы через него, либо исходить из возможного таймаута и предусмотреть повтор выполнения SQL.
Есть и еще одна возможность: не так давно появился новый вид лога SQlite: Write Ahead Log, WAL .
Если включить для БД именно этот режим лога, то несколько подключений смогут одновременно модифицировать БД.
Но в этом режиме БД уже занимает несколько файлов.
Ну понятно теперь почему SQLite - ужасна, ведь у нее нет ГЛОБАЛЬНОГО КЭША?
Действительно, все современные RDBMS немыслимы без глобального разделяемого кэша, который может хранить всякие ништяки вроде скомпилированных параметризованных запросов. Этим занят сервер, которого тут нет. Однако, в рамках одного приложения SQlite может разделять кэш между несколькими подключениями (читать тут: www.sqlite.org/sharedcache.html) и немного сэкономить память.
А почему все жалуются, что SQLite - тормозит?
Две причины. Первая - настройки по умолчанию. Они работают на надежность, а не на производительность.
Вторая - непонимание механизма фиксации транзакций. По умолчанию после любой команды SQlite будет фиксировать транзакцию (то есть ожидать пока БД окажется в целостном состоянии для отключения питания). В зависимости от режима паранойи SQLite потратит на это от 50 до 300 мс (ожидая окончания записи данных на диск).
Что делать-то? Мне нужно вставить 100 тыс записей и быстро!
Удалить индексы, включить режим синхронизации OFF (или NORMAL), вставлять порциями по N тысяч (N - подобрать, для начала взять 5000). Перед вставкой порции сделать BEGIN TRANSACTION, после - COMMIT.
А вот я нашел ошибку! Как рапортовать?
Никак.

Дело в том, что популярность SQLite страшна - она везде. Это не шутка.
И разработчики столкнулись с валом сообщений об ошибках, которые либо были вызваны непониманием, либо являлись скрытым feature request. Они, фактически, закрыли прямой прием репортов с ошибками.
Так что следует подписаться на список рассылки и описать там проблему и надеятся на лучшее.

Лично у меня возникла ситуация, которую я трактовал как дефект SQLIte. Я описал это в рассылке. В следующей версии поведение SQLite было исправлено.

Удобная утилита , чтобы поиграться с SQLite.

Продолжение следует.

Теги: Добавить метки

Если вы столкнулись с файлами имеющих расширение.sqlite или.sqlite3, не знаете чем их открыть, чтоб покопаться в их внутренностях, тогда отличным выбором станет бесплатная программа . Для тех, кому интересно, что это за файлы, то это база данных в формате SQLite, где все таблицы данные храниться в одном файле. Сейчас многие программы используют базы SQLite для хранения своих данных в упорядоченном виде, например переписка и номера контактов в Viber.

SQLite не нужно устанавливать, единственный исполняемый файл, который вы скачаете, это и есть вся программы, который запускаем по необходимости. Только во время первого запуска приложение скромно поинтересуется, какой язык вы предпочитаете использовать, русский присутствует. Во время каждого запуска выскакивает таблица с подсказками, которую можно отключить, поставив соответствующую галочку.

Перед тем как углубляться в нюансы работы SQLite, хочется сделать небольшую ремарку. У разработчиков нет негласных правил, какое должно быть расширения у базы данных SQLite. В зависимости, от фантазии разработчиков расширения файла может быть как осмысленные.sqlite , .sqlite3, sl2, sl3 так и более универсальные db, db2, db3, sbd3. Чтоб убедиться, что вам под руки попала действительно база данных формата SQLite , нужно и если в первой строчке встречается словосочетание «SQLite format», тогда смело берем SQLiteStudio в руки.

Чтоб открыть базу данных жмем в основном меню «Базы данных»-> «Добавить базу данных», после чего выскакивает окошко, в котором выбираем файл с интересующей нас базой данной, при необходимости делаем небольшие настройки (какой именно версии база данных и запоминать ли её), и жмем «ОК». С настройками можете особо не заворачиваться и все оставить по умолчанию, в 99% случаев все прекрасно работает.

После подключения базы данных она добавляется в левую табличку, по щелчку на которой раскрывается список таблиц, которые там содержаться. В правой части можно увидеть структуру таблице на одноименной вкладке и данные, которые там храниться, для чего нужно щелкнуть по вкладке «Данные».

Об остальных возможностях SQLiteStudio нет смысла рассказывать, большинству простых пользователей они не понадобиться, а все остальные сами понимают, зачем лезут редактировать базы данных и как это нужно делать. Только хочу дать одну рекомендацию, делайте резервную копию базы данных, перед тем как начнете лезть в неё, а тем более редактировать.

На удивление здесь много настроек, однако, они все в основном связны с внешним видом программы (цвета, шрифты, что показывать и что прятать) и быстрыми клавишами.

Программа на 5+ справляется со своими задачами позволяя получить доступ к данным хранящимся в базах данных формата SQLite, редактировать данные и таблицы. Самое главное все работает довольно стабильно, быстро и не стопориться на некоторых файлах по непонятным причинам, как приложения других разработчиков.

Программа прекрасно работает на 32-х и 64-х битных операционных системах. Интерфейс переведен приблизительно на десять языков, в том числе и русский.

SQLite – небольшая кросплатформенная библиотека, включающая в себя полноценный изолированный транзакционный движок, поддерживающий основный набор функций и возможностей по работе cо встраиваемыми базами данных типа SQL. Они используются повсеместно, начиная от ведения учета на небольших предприятиях и обеспечения работы простых сайтов, заканчивая поддержанием функционирования крупных промышленных комплексов и мобильных гаджетов. Скачать SQLite вместе с ее исходным кодом можно бесплатно, например, с нашего сайта.

Главная особенность программы – отсутствие необходимости проводить инсталляцию сервера, служб, их настройку и запуск для работы с БД. Не нужно также создавать новую базу данных – все это интегрировано в SQLite в виде динамических библиотек (dll-файлов).

Очередным преимуществом SQLite является транзакционность – последовательная обработка информации по частям: пока работа с одной частью не завершится успешно, другие действия не выполняются. Эта особенность SQLite позволит избежать проблем при возникновении неполадок или прерыванию работы (случайная перезагрузка компьютера или отключение от сети).

В отличие от большинства подобных продуктов, SQLite работает с хранимыми на жестком диске файлами напрямую. Готовая база данных со связанными таблицами и индексами хранится в одном файле.

Перед очередным релизом SQLite проходит многомилионные автоматические тесты, с которыми без проблем справляется с результатом в 100% для всех мобильных и стационарных платформ.

Для пользователей, знающих язык программирования C, предлагается скачать исходный код SQLite и скомпилировать из него программу с требуемым функционалом, удалив все лишние функции, вследствие чего размер утилиты может равняться 500 и даже 300 КБ.

SQLite - компактная встраиваемая реляционная база данных. Исходный код библиотеки передан в общественное достояние. В 2005 году проект получил награду Google-O’Reilly Open Source Awards.

Слово «встраиваемый» (embedded) означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа. Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется; ACID-функции достигаются в том числе за счёт создания файла журнала.

Несколько процессов или потоков могут одновременно без каких-либо проблем читать данные из одной базы. Запись в базу можно осуществить только в том случае, если никаких других запросов в данный момент не обслуживается; в противном случае попытка записи оканчивается неудачей, и в программу возвращается код ошибки. Другим вариантом развития событий является автоматическое повторение попыток записи в течение заданного интервала времени.

В комплекте поставки идёт также функциональная клиентская часть в виде исполняемого файла sqlite3, с помощью которого демонстрируется реализация функций основной библиотеки. Клиентская часть работает из командной строки, позволяет обращаться к файлу базы данных на основе типовых функций операционной системы.

Благодаря архитектуре движка возможно использовать SQLite как на встраиваемых системах, так и на выделенных машинах с гигабайтными массивами данных.

SQLite поддерживает динамическое типизирование данных. Возможные типы полей: INTEGER, REAL, TEXT, BLOB.

Использование SQLite

Сама библиотека SQLite написана на C; существует большое количество привязок к другим языкам программирования, в том числе Delphi, C++, Java, C#, Visual Basic .NET, Perl, PureBasic, Tcl (средства для работы с Tcl включены в комплект поставки SQLite), Haskell, Scheme, Smalltalk, и Parser, а также ко многим другим. Полный список существующих средств размещён на странице проекта.

Простота и удобство встраивания SQLite привели к тому, что библиотека используется в браузерах, музыкальных плеерах и многих других программах.

В частности, SQLite используют:

  • - среда для запуска приложений (частично);
  • Autoit;
  • Фреймворк ;
  • Фреймворк Yii; (имеется в наличии);
  • Платформа XUL на движке Gecko 1.9+, 1.9+ и, потенциально, все приложения, основанные на этой платформе, в том числе:
  • Некоторые модели GPS-навигаторов Garmin;
  • Android API;
  • Minetest.

Многие программы поддерживают SQLite в качестве формата хранения данных (особенно в Mac OS и iOS, Android), в том числе:

  • 1С:Предприятие 7.7 (с помощью внешнего компонента);
  • 1С:Предприятие 8.3 (для хранения записей журнала регистрации);
  • Adobe Photoshop Lightroom;
  • Eserv;
  • F-Spot;
  • (начиная с версии 3.0);
  • Daminion;