Вы находитесь на странице: 1из 16

Встраиваемый движок

баз данных SQLite

Владимир Парфиненко
   
SQLite / история

Эскадренный
миноносец с
управляемым
ракетным
оружием

   
SQLite / история
● D. Richard Hipp
● база данных изначально
спроектирована для эсминцев флота
США в 1980 г.
● была необходима простая база
данных, не требующая установки и
администрирования

   
SQLite / версии
● v1.0 – 2000
● первая публичная версия
● использовал gdbm
● v2.0 – 2001
● реализация B-деревьев
● v3.0 – 2004
● поддержка UTF и другие важные
изменения
● v3.6.23.1 – 30.03.2010
   
SQLite / пользователи
● Adobe ● Google
● AIR ● Android OS
● Acrobat Reader ● Chrome
● Apple ● Skype
● Safari ● Sun
● iTunes ● Solaris 10
● iPhone OS ● Symbian
● Firefox

   
SQLite / описание
● работает с обычными файлами на
диске
● распространяется в виде отдельной
кроссплатформенной библиотеки
● не использует парадигму
клиент‑сервер
● имеет крошечный размер
● является public domain

   
SQLite / установка
● http://www.sqlite.org/download.html
● исходные коды для сборки
● бинарные сборки для
● Linux
● Mac OS

● Windows

   
SQLite / интерактив

В комплекте имеется консольная


утилита sqlite3
$ sqlite3 /path/to/some.db
создает или открывает существующую
базу данных с возможностью
интерактивного исполнения SQL
запросов

   
SQLite / особенности SQL
● один файл = одна база данных
● динамическая типизация столбцов
● поддержка транзакций
● неполная поддержка SQL92
● ALTER TABLE только ADD и RENAME
● нет RIGHT и FULL OUTER JOIN
● …

   
SQLite / C интерфейс
#include <sqlite3.h>
void main()
{
sqlite3 *db;
char error_msg[256];
sqlite3_open("/path/to/some.db", &db);
...
sqlite3_close(db);
}

   
SQLite / C интерфейс

Выполнение одной или нескольких SQL


инструкций, разделенных точками с запятой

sqlite3_exec(db,
"CREATE TABLE test (id integer);",
NULL, 0, &error_msg);

   
SQLite / C интерфейс

Выполнение инструкций с обработкой


результатов

sqlite3_exec(db,
"SELECT * FROM test;",
callback, 0, &error_msg);

   
SQLite / C интерфейс
int callback(void *,
int argc, char **argv, char **col_names)
{
/*
* argc – количество столбцов в строке
* argv – значения столбцов
* col_names – названия столбцов
*/
}

   
SQLite / Ruby обертка
require 'sqlite3'
db = SQLite3::Database.new "/path/to/some.db"

rows = db.execute "SELECT * FROM test"


# rows - массив строк; строка – массив значений

columns, *rows = db.execute2(


"SELECT * FROM test" )
# columns – массив названий столбцов

   
SQLite / другие обертки

Существуют обертки для работы с


sqlite3 практически для всех языков
программирования и платформ
● C++ ● Linux
● Java ● Mac
● .NET ● Windows
● Python ● iPhone
● PHP ● Android
● Objective-C ● Symbian
   
SQLite

Спасибо за внимание

Ваши вопросы?