Меню Рубрики

Установка sqlite для delphi

Сегодня:

Последние:
— 27.12, 20:12 / #6692
— 29.03, 23:32 / #6682
— 30 апреля 2012

Сейчас онлайн:
На сайте — 6
На IRC-канале — 2

Знакомство с SQLite

Вступление

Часто на форумах, да и здесь на сайте спрашивают, какую базу данных выбрать. Хочу сегодня представить вам ещё один движок БД, у которого есть свои преимущества.

Называется этот движок SQLite. Итак, его преимущества:

  • бесплатный + открытый исходный код;
  • достаточно быстр;
  • не нуждается в дополнительной настройке на клиентской машине – распространять вместе с приложением нужно только одну dll;
  • лоялен к программисту;
  • возможность работать с компакт-диска (т.е. в режиме «только для чтения»);
  • возможность работать с гостевого аккаунта;
  • никаких записей в реестр и на диск (кроме dll и файла базы данных), никаких настроек сетевых протоколов;
  • многоплатформенный: есть поддержка для многих языков (с 3 версии формат файла БД совместим для различных ОС и языков);
  • сама dll зависит только от одной системной dll — MSVCRT.DLL, которая всегда есть в системе;
  • синтаксис SQL достаточно хорошо соответствует стандарту – вы можете взять любую книгу, где описывается ANSI SQL 92 и пользоваться. Или посмотреть на сайте http://www.sqlite.org/lang.html.
  • не рекомендован для баз большого размера (эксперты не рекомендуют более 200 Мб);
  • есть только два типа данных – целое автоинкримент и строка (всё остальное – эмулируется через строки);
  • не предназначен для многопользовательского использования (хотя это и возможно).

Начальные приготовления

Для работы с этой базой нам в обязательном порядке понадобится сама dll. Её можно скачать с сайта http://www.sqlite.org/ или взять в архиве к статье. С dll можно работать напрямую, но куда удобнее использовать обертку в виде классов. Есть обертка, которая подобна делфийскому TTable, есть и драйвер для ODBC, который позволяет работать с базой посредством TADOTable. И если первый вариант ещё интересен, то вариант с использованием через ADO лишен смысла – многие «вкусности» теряются.

В архиве вы найдете разные классы для работы. Я работаю с одним с них, и дальше буду описывать его. Главное преимущество – он без компонентов. Хотя кому-то это и покажется сложным, но можно, например, делать консольные приложения.

Также неплохо иметь ещё одну программу – программу для редактирования баз данных. Что-то в виде Database Desktop, только для SQLite. Такая программа есть и она бесплатна. Скачать можно здесь http://sqlitebrowser.sourceforge.net/ или опять же, взять в архиве. Хотя программа и проста, свою работу выполняет отлично. Мы не будем составлять базу в программе, а пойдём как настоящие кодеры — научимся создавать её в своей программе.

Работа с БД

Для примера мы создадим маленькую базу из одной таблицы. У нас будет одно автоинкрементое поле и два строковых.

Запускаем Delphi. Создаём новый проект. В папку с проектом копируем файлы sqlite3.pas, sqliteTable3.pas и sqlite3.dll. Дальше их надо подключить к проекту. Выбираем в меню Project – Add to project и добавляем эти файлы. Также не забываем сделать File – Use unit и выбрать эти же файлы, но предварительно переключившись на главный юнит.

После строки <$R *.dfm>допишем Var sldb: TSQLiteDatabase; — это будет глобальный объект для работы с базой. Хотя лучше сделать его свойством формы. Кто понимает – сделает 🙂

Делаем подключение к базе. Для этого впишем такой код в FormCreate:

Согласитесь, всё предельно просто. На ADO, если бы базы не было, пришлось бы делать дополнительную работу и писать процедуру не на одну строку.

Суть этого кода следующая – открыть файл test.db. Потом проверить, есть ли в нём таблица test. Если нет – создать, выполнив запрос. Если файла не будет, то он будет создан. Если же при создании таблицы у нас что-то не сложилось – закроем приложение.

Также не забываем, что за собой надо чистить.

Теперь научимся добавлять записи. Ставим кнопку с заголовком «Create records» («Создать записи») и создадим для неё такой обработчик

Теперь научимся отображать записи и выполнять запросы к базе.

Поставим TMemo, TEdit и кнопку «Select» («Выбрать»). По нажатию на кнопку будем искать записи в поле T1, которые начинаются на те же цифры, что мы ввели в Edit, и будем их выводить.

Как можно заметить, ничего особенного. Всё очень похоже на то, что доступно в BDE.

А картинки как?

Не знаю почему, но с другими базами добавление картинок для меня – большая трагедия. И если ещё с BDE всё спокойно, то с ADO сплошные приключения 🙂

В SQLite есть специальный тип поля – BLOB (он есть и во многих других БД).

Итак, общий алгоритм добавления бинарных данных в базу:

— Добавить запись с помощью INSERT. Но не включать бинарное поле (BLOB).

— Узнать ID добавленной записи (есть специальный метод у TSQLiteDatabase – GetLastInsertRowID – возвращает значение последнего добавленного автоинкрементого поля. Его имя не обязано быть ID. Важно только наличие)

— С помощью UPDATE обновить данное поле, добавив к нему изображение/BLOB (для этого опять же есть метод UpdateBlob. Он принимает два параметра. Первый – сиквел-выражение вида «UPDATE моя_таблица SET поле_блоба = ? WHERE поле_ ,fmOpenRead));.

Саму реализацию оставляю как домашнее задание 🙂

Результаты

Всего несколько строк, а имеем сколько преимуществ. На этом движке я построил несколько приложений, используя его для хранения информации. По субъективным ощущениям работает база в несколько раз быстрей, чем аналогичная на Access. Приложение при старте запускается моментально, ведь ему не надо инициализировать COM-объекты.

Пробуйте, дерзайте, экспериментируйте!

Статья добавлена: 31 января 2008

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Быстрая вставка ссылки на статью в сообщениях на сайте:
<> (буква a — латинская) — только адрес статьи (URL);
<<статья:43>> — полноценная HTML-ссылка на статью (текст ссылки — название статьи).

Поделитесь ссылкой в социальных сетях:

Комментарии читателей к данной статье

Столкнулся с ошибкой, если в пути к файлу базы имеются кирилические символы, всплывает ошибка «Failed to open database «$$$$$$$$» : unable to open database file.» С помощью Вадима выяснил, что проблема заключается в необходимости передавать имя файла в кодировке «UTF-8», а не Win.

Index: SQLite3.pas
===================================================================
— SQLite3.pas (revision 2418)
+++ SQLite3.pas (working copy)
@@ -57,7 +57,7 @@
TSQLiteResult = ^PChar;
TSQLiteStmt = Pointer;

-function SQLite3_Open(dbname: PChar; var db: TSqliteDB): integer; cdecl; external ‘sqlite3.dll’ name ‘sqlite3_open’;
+function SQLite3_Open(dbname: PUTF8String; var db: TSqliteDB): integer; cdecl; external ‘sqlite3.dll’ name ‘sqlite3_open’;
function SQLite3_Close(db: TSQLiteDB): integer; cdecl; external ‘sqlite3.dll’ name ‘sqlite3_close’;
function SQLite3_Exec(db: TSQLiteDB; SQLStatement: PChar; CallbackPtr: Pointer; Sender: TObject; var ErrMsg: PChar): integer; cdecl; external ‘sqlite3.dll’ name ‘sqlite3_exec’;
function SQLite3_Version(): PChar; cdecl; external ‘sqlite3.dll’ name ‘sqlite3_libversion’;
Index: SQLiteTable3.pas
===================================================================
— SQLiteTable3.pas (revision 2418)
+++ SQLiteTable3.pas (working copy)
@@ -123,6 +123,7 @@
var
Msg: pchar;
iResult: integer;
+ utf8Str: UTF8String;
begin
inherited Create;

Читайте также:  Установка подростка на большие масштабы

Msg := nil;
try
— iResult := SQLite3_Open(PChar(FileName), Fdb);
+ utf8Str := AnsiToUtf8(FileName);
+ iResult := SQLite3_Open(PUTF8String(utf8Str), Fdb);

if iResult <> SQLITE_OK then
if Assigned(Fdb) then

Ничего так, спасибо! Помогли разобраться с sqlite немного. С БД раньше вообще не работал.

Только программа слегка некорректная, вроде. У вас:
Memo1.Lines.Add(sltb.FieldAsString(0)+’, ‘+sltb.FieldAsString(0));
а надо:
Memo1.Lines.Add(sltb.FieldAsString(0)+’, ‘+sltb.FieldAsString(1));

Оставлять комментарии к статьям могут только зарегистрированные пользователи.

источник

Парсинг от А до Я

Блог о программировании парсеров и web-автоматизации

Поиск по блогу

суббота, 26 января 2013 г.

SQLite и Delphi 7: работа с БД с помощью DISQLite

  • Максимальная простота и легкость.
  • Минимум телодвижений для работы приложения на другой машине: надо просто скопировать все содержимое папки к себе (кроме файлов БД нужна только dll).

Библиотека DISQLite для работы с SQLite в Delphi 7

Установка DISQLite

Создание базы данных

Прикинем, что нам надо хранить в базе данных. Пока по-минимуму.

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

Все это только наброски, я еще сама точно не знаю, чем потом дополню базу.

Я покажу, как можно открыть базу (или создать, если такой базы нет) из приложения. Как вариант, можно создать ее в каком-нибудь менеджере БД (мне нравится бесплатная программа SQLite Expert Personal, ее функционала вполне достаточно), а дальше работать с созданной базой через IDE-компоненты.

Вот как выглядит окно SQLite Expert Personal с открытой БД:

Итак, код создания базы данных SQLite с помощью DISQLite в Delphi7:

В FormDestroy не забудьте очистить память, выделенную под vkBase.

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

Сначала следует сказать, что в таблицах SQLite каждая запись снабжается уникальным в рамках этой таблицы ROWID. При добавлении записи этот ключ по умолчанию автоинкрементируется. Чтобы воспользоваться этим механизмом «встроенного инкремента», можно или назвать поле ROWID (еще варианты: _ROWID_, OID), или создать поле типа INTEGER PRIMARY KEY.

Так вот, если в менеджере SQL-код:

прокатывает, то при открытии такой базы через DISQLite (или при попытке исполнить этот запрос через Execute), выскакивает ошибка SQLite Error 11 — malformed database schema (vk_users) near AUTOINCREMENT. Может, это такой баг (особенность?) DISQLite?

Пожалуй, про создание базы и таблиц — все. Не думаю, что подробно следует освещать выполнение SQL, вроде как проще некуда.

SELECT в DISQLite

Чтобы делать выборку SELECT, в библиотеке есть TDISQLite3UniDirQuery. Небольшой пример, как работать с экземпляром класса безотносительно к конкретно этому приложению. Кто знаком с работой с БД, увидит, что все стандартно, ничего нового и особенного.

Можно создавать экземпляр TDISQLite3UniDirQuery динамически (как выше), а можно разместить его на форме и обращаться к его свойствам в редакторе.

источник

SQLite в Delphi: большой обзор и LiteDAC в примерах

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

В качестве компонентов для доступа к SQLite в Delphi я, как Вы понимаете, буду использовать LiteDAC. На данный момент последняя версия этих компонентов — 2.7.24. если же Вы не используете эти компоненты по каким-либо причинам, то я вам советую начать их использовать, так как пока я ещё не встретил более простых и понятных компонентов для работы с базами данных. Однако, если Вы используете для работы с SQLite что-либо другое, то этот обзор также может оказаться для вас полезным, потому что здесь будет рассматриваться не только работа LiteDAC, но и, в принципе, работа с SQLite.

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

Как видите, обзор охватывает период с 2010 по 2015 год и за 5 лет, что компоненты доступа к SQLite в Delphi, что сама СУБД претерпели изменения. Итак, начнем по порядку.

Содержание обзора:

1. Что представляет из себя SQLite и как всё устроено в SQLite?

SQLite — это компактная встраиваемая реляционная база данных. Для нас, как для разработчиков это говорит о том, что:

  1. SQLite легко настраивать. Для работы с SQLite не требуется установка дополнительного программного обеспечения (разве что для удобства разработки поставить какую-нибудь утилиту администрирования базы данных, но об этом чуть ниже). Всё, что необходимо, чтобы начать работу — это положить рядом с exe-файлом вашей программы небольшую динамическую библиотеку sqlite3.dll и использовать базовые методы (SQLite API) этой dll.
  2. SQLite просто использовать. Хотите — используйте методы dll, хотите — специальные компоненты, как платные, так и бесплатные. На сегодняшний день для Delphi имеется целый ряд компонентов, позволяющих работать с SQLite, в том числе и поставляемые вместе с RAD Studio.

База данный SQLite представляет из себя обычный файл, который может располагаться где угодно, лишь бы вы смогли получить к этому файлу доступ — даже на CD- или DVD-диске, правда, в этом случае вы сможете только читать базу, но не записывать в неё данные (что характерно). В итоге получаем: один файл — одна база данных. Легко, просто, понятно. Естественно, что если Вы только выбираете какую базу данных использовать в своем приложении, то одним из критериев выбора являются ограничения той или иной СУБД. Давайте посмотрим на ограничения СУБД SQLite.

Читайте также:  Установка аккумулятора вместо батареек

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

Описание Значение Константа в исходнике
Максимальная длина строки или BLOB-поля SQLITE_MAX_LENGTH
Максимальное количество колонок SQLITE_MAX_COLUMN
Максимальная длина SQL-выражения SQLITE_MAX_SQL_LENGTH
Максимальное количество таблиц в выражениях с JOIN Максимальная глубина дерева выражений SQLITE_MAX_EXPR_DEPTH
Максимальное количество аргументов функции SQLITE_MAX_FUNCTION_ARG
Максимальное количество термов в объединённом выражении с SELECT SQLITE_MAX_COMPOUND_SELECT
Максимальная длина шаблона как аргумента операторов LIKE или GLOB SQLITE_MAX_LIKE_PATTERN_LENGTH
Максимальное количество символов-заменителей в одном SQL-выражении SQLITE_MAX_VARIABLE_NUMBER
Максимальная глубина рекурсии триггеров SQLITE_MAX_TRIGGER_DEPTH
Максимальное количество присоединённых баз SQLITE_MAX_ATTACHED
Максимальный размер страницы базы данных SQLITE_MAX_PAGE_SIZE
Максимальное количество страниц в файле базы данных SQLITE_MAX_PAGE_COUNT

Как видите, ограничения более, чем приемлемые для разработки более менее серьезных приложений. Конечно, в случае острой необходимости Вы всегда сможете поменять некоторые ограничения в большую сторону (например, установить максимальное количество присоединенных баз данных в максимально возможное значение — 125), однако, лично мне с трудом представляется то, какое приложение надо писать в Delphi, чтобы превысить лимиты по умолчанию. Что же касается максимального размера файла базы данных, то, согласно официальной документации, в настоящее время максимально возможный размер файла БД SQLite составляет 140 Тб, однако конкретно это ограничение не тестировалось, так как разработчики SQLite не имеют доступа к программным и аппаратным средствам способных достичь такого лимита…что уж говорить нам — простым смертным пользователям SQLite.

2. Кто использует SQLite?

Еще один немаловажный момент при выборе СУБД, который волнует разработчиков — кто это использует? В особенности, если рассматриваются бесплатные инструменты и средства с открытым исходным кодом (к которым относится и SQLite). Ведь, как часто бывает, даже самый гениальный проект с открытым исходным кодом может внезапно уйти в небытие и разработчик останется ни с чем: морально устаревающий со временем инструмент, отсутствие поддержки и так далее. И здесь в пользу того или иного компонента или инструмента разработчика играет наличие в рядах пользователей наиболее титулованных и популярных компаний — уж, если они не боятся использовать что-то бесплатное, то всяко-разно есть шанс, что поддержка продукта будет идти регулярно и долго (по данным официального сайта, SQLite планируется поддерживать вплоть до 2050 года).

Вот небольшой перечень программных продуктов, которые активно используют SQLite:

  1. Google Chrome
  2. Skype
  3. Opera
  4. FireFox
  5. ThunderBird
  6. Safari
  7. Практически все программное обеспечение для Android, которому необходимо хранить какие-либо данные (в Android встроена поддержка SQLite)

В дополнение (могу, конечно, сейчас немного ошибиться, так как давно не заглядывал в работы этим приложений) также скажу, что SQLite использовался такими клиентами облачных хранилищ как Dropbox и Google Drive.

3. Какие инструменты использовать для администрирования баз данных SQLite?

Как говориться, на вкус и цвет фломастеры разные и каждый сам выбирает что использовать для администрирования баз данных SQLite: кому-то (как мне, например) по душе «тяжеловесные» программы типа SQLite Expert в которых можно сделать с базой всё, что угодно, другому — подавай легкий маленький и шустрый инструмент, чтобы только посмотреть структуру, добавить пару строк или таблиц в БД и забыть. Разные потребности, соответственно, рождают самые различные предложения. А, учитывая достаточно высокую популярность SQLite, можно смело говорить о том, что выбор программы для администрирования баз SQLite более, чем достаточен даже для самого привередливого пользователя. Когда я начинал свое знакомство с SQLite, то проводил небольшой обзор решение в области администрирования SQLite, но, как я уже писал выше, всё меняется и рынок программных продуктов также претерпевает свои изменения. Поэтому в этой статье, я лишь перечислю рассмотренные ранее программные продукты, а также дополню обзор другими приложениями, о которых мне сообщали Вы, уважаемые читатели, в своих комментариях к статьям.

Название Стоимость Ссылка на сайт Скрин окна программы

(кликабельно)

Дата обновления
SQLite Database Browser бесплатно ссылка 04/05/2016
SQLite Administrator бесплатно ссылка нет информации
SQLiteManager $49 ссылка 17/06/2016
SQLite Maestro ссылка 12/01/2015
SQLite Expert версия «Personal» — бесплатно

версии «Professional» от $59

Не рассмотренные ранее программные продукты

SQLiteSpy бесплатно ссылка 20/06/2016
SQLiteStudio бесплатно ссылка 10/06/2016

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

4. Какие компоненты есть в Delphi для доступа к SQLite?

В этой части, конечно, не такое большое разнообразие, как в части программ для управления базами SQLite, но, тем не менее и того, что есть в наличии сейчас, когда актуальной версией Delphi является Delphi 10.1 Berlin, более чем достаточно, чтобы начать работу с SQLite.

В теперь уже далеком 2010-м году, когда мы радовались выходу Delphi 2010 и обсуждали её новинки, на рынке компонентов Delphi для SQLite было совсем не радостно. Конечно, уже тогда были свои решения для работы с SQLite (всё-таки SQLite стартовала ещё раньше — в 2000-м году), но, тем не менее сама Delphi не могла похвастаться работой с SQLite «из коробки». Однако, тем, кому было необходимо использовать эту СУБД в Delphi-проектах, было вполне достаточно на первоначальном этапе использовать Delphi wrapper for Sqlite 3 от Тима Андерсона (Tim Anderson). Эти простые в работе классы для SQLite в Delphi и сейчас доступны для скачивания и, даже, со временем стали поддерживать Unicode. Этим же wrapper’ом пользовался и я в свое время, когда только начинал разбираться с SQLite.

На базе Delphi wrapper for Sqlite 3 также развивались такие обёртки для SQLite в Delphi, как Delphi SQLite Wrapper от разработчика библиотеки Synapse и компоненты от sv-utils. Все эти обёртки вносили какие-то улучшения в работу с SQLite (добавлялась работа с параметрами, поддержка Unicode, кроссплатформенность и т.д.), однако, повторюсь, они базировались на обёртке от Тима Андерсона. В настоящее время все эти замечательные миниатюрные компоненты, видимо, заброшены авторами, так как даты последних обновлений не особенно вселяют надежду на их дальнейшее развитие — 2012-2013 год. Из более менее «живых» бесплатных компонентов можно выделить ZeosLib, которой я пользовался ещё в бытность Delphi 7, а также компоненты DISQLite3 от разработчика SQLiteSpy.

Это, в принципе, и понятно, потому как прошло несколько лет и Embarcadero представила нам новый релиз — Delphi XE3, которая позволяла работать с базами SQLite, используя DBExpress. И, как говориться, жизнь стала налаживаться. Прошло совсем немного времени и уже 5 февраля 2013 года Embarcadero заявила в своем пресс-релизе о покупке компонентов AnyDAC (ныне известных под названием FireDAC) — мощной библиотеки компонентов для доступа практически к любым базам данных, включая и SQLite. Таким образом, мы уже имели возможность после покупки лицензии на Delphi свободно использовать для доступа к базам данных SQLite:

  1. Бесплатные обёртки от различных разработчиков «Delphi SQLite Wrapper», «Delphi wrapper for SQLite 3«, sv-utils и т.д.
  2. Бесплатные библиотеки компонентов (ZeosLib, FireDAC)
  3. Технологию DBExpress
  4. Компоненты (DISQLite).

Однако, обилие различных бесплатных и относительно бесплатных решений в области работы с SQLite в Delphi нисколько не затормозило разработку платных компонентов для доступа к SQLite. И здесь, наиболее ярким представителем, на мой взгляд, является компания Devart с их замечательными компонентами для доступа к SQLite — LiteDAC (стоимость компонентов на данный момент составляет от 6800 руб.).

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

5. Установка и настройка LiteDAC

Скачать пробную версию компонентов можно с официального сайта Devart. После того, как установщик скачан, запускаем его и устанавливаем компоненты. После установки компонентов на вкладке LiteDAC в Delphi появится вот такой набор компонентов:

Так как компоненты LiteDAC распространяются в двух редакциях: Standard и Professional, то набор компонентов у них разный. Так в версии LiteDAC Standard Edition Вы сможете воспользоваться следующими компонентами для доступа к SQLite:

TLiteConnection Компонент для создания подключения к БД SQLite.
TLiteQuery Компонент для выполнения запросов и работы наборами данных.
TLiteSQL Компонент для выполнения SQL-запросов, которые не возвращают наборы данных
TLiteTable Компонент позволяет получать и изменять данные в одной таблице БД без написания SQL-запросов
TLiteUpdateSQL Компонент позволяет настроить операции обновления для наборов данных.
TLiteDataSource Компонент для создания связей между компонентами LiteDAC, содержащими наборы данных и элементами управления на форме.
TLiteScript Компонент для выполнения последовательности SQL-запросов
TLiteSQLMonitor Компонент для мониторинга выполнения SQL-запросов к БД SQLite
TLiteConnectDialog Компонент для создания пользовательских диалогов для запроса логинов/паролей и ключей шифрования БД.
TVirtualTable Компонент для хранения наборов данных в памяти.

Профессиональная версия LiteDAC (Professional Edition) расширяется следующими компонентами

TLiteUserFunction Компонент для определения пользовательских функций для будущего использования в SQL-запросах
TLiteLoader Компонент обеспечивает быструю загрузку внешних данных в базу
TLiteDump Компонент обеспечивает создание дампов для базы данных или отдельных её частей и восстановления БД из этих дампов.
TLiteMetaData Компонент для извлечения мета-данных из базы данных
TLiteEncryptor Компонент для шифрования/дешифрования базы данных SQLite
TCRBatchMove Компонент обеспечивает обмен данными между всеми потомками TDataSet.

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

  1. Возможность использовать прямой доступ (Direct Mode) к БД SQLite
  2. Возможность использовать шифрование базы данных (в режиме Direct Mode)
  3. Возможность разработки приложений для работы с базами данных под Android и iOS

Перейдем к разработке нашего первого приложения для работы с SQLite в Delphi.

6. Первая база данных SQLite в Delphi

Пусть в нашей базе данных будет храниться, например, информация о курсе валют от ЦБ РФ. Для этого разберемся со структурой нашей будущей базы данных и типами данных.

Так как мы будем использовать API ЦБ РФ по курсам валют, то нам потребуется создать в нашей базе данных как минимум две таблицы:

  1. Справочник кодов валют
  2. Данные по курсам валют на определенную дату.

Таблица справочника кодов валют будет содержать следующие столбцы:

  1. идентификатор записи, например, 1
  2. идентификатор валюты, например, R01010
  3. номинал, например, 10
  4. наименование валюты на английском языке, Australian Dollar
  5. наименование валюты на русском языке, например, Австралийский доллар

Таблица данных о курсах валют будет содержать следующую информацию:

  1. идентификатор записи, например, 1
  2. идентификатор валюты, например, R01010
  3. Дата на которую установлен курс, например, 10.08.2016
  4. Курс валюты по отношению к рублю, например, 49,9973

6.1. Создаем базу данных с помощью SQLite Expert

Создавать базу данных можно как с помощью наших компонентов непосредственно в Delphi, так и, используя одну из программ, рассмотренных выше. Например, создать в SQLite Expert таблицу со справочником кодов можно следующим образом:

1.Запускаем SQLite Expert и жмем кнопку «New Database»

2. Задаем имя базы данных, её расположение, кодировку текста и другие параметры

О таком параметре как Vacuum мы поговорим чуть позднее. Пока же жмем «Ok» и переходим к следующему шагу — созданию таблицы.

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

Как видите, несмотря на то, что в SQLite нет такого типа, как CHAR, я все равно его использовал при создании таблицы и это не будет иметь никаких негативных последствий для работы с нашей базой данных.

Аналогичным образом создадим таблицу с курсами валют, опять же используя такие типы данных как DATE и CURRENCY:

Теперь рассмотрим другой вариант создания базы данных — с помощью LiteDAC.

6.2. Создание базы данных с помощью LiteDAC

Для создания базы данных воспользуемся компонентом TLiteConnection. Для этого создаем в Delphi новый VCL-проект, бросаем на главную форму компонент TLiteConnection с вкладки LiteDAC и устанавливаем свойство TLiteConnection.Options.ForceCreateDatabase в значение True. Это позволит нам, в случае отсутствия файла базы данных по указанному в свойстве Database пути создать его.

Теперь создадим обработчик события OnBeforeConnect компонента и напишем следующий код:

источник

Добавить комментарий