Використання sqlite manager для роботи з базою даних sqlite. SqliteDog - сучасний менеджер баз даних SQLite

SQLite є дуже популярним рішенням для зберігання даних та операційною системою система Androidне виняток. Сама система та багато програм використовують для зберігання інформації бази даних — файли з розширенням db. Які дані містяться в базах, як їх переглядати, що з ними робити і чим це загрожує пристрою з правами суперкористувача - про все це я розповім в статті.

WARNING

Автор статті не є фахівцем з баз даних і SQLite, він розуміє, що деякі дії можна виконати простіше, і не несе відповідальності за виникнення параної після прочитання цієї статті. Також настійно рекомендується перед будь-якими маніпуляціями зробити резервну копію бази даних, яку ви редагуєте.

Робота з базами

Для роботи з базами даних існує маса різного програмного забезпечення як для комп'ютерів, так і для Android пристроїв. Бази даних програм зазвичай розташовані по шляху /data/data/NAME ПАКЕТАДОДАТКИ/databases. Ви можете дізнатися назву пакета програми, яка вас цікавить, перейшовши в «Налаштування -> Програми -> Все» і вибравши потрібний (відкриється вкладка «Про програму»), або в адресному рядкубраузер на сторінці програми в Play Market.

Щоб потрапити в сам каталог /data/data, вам потрібні права суперкористувача, але він чудово впорається з переглядом вмісту Root Explorer. Для більш зручної роботи, а також для редагування баз даних на пристрої можна використовувати, наприклад, SQLite Debugger, а на комп’ютері – DB Browser for SQLite. Для роботи з базами даних також потрібно встановити BusyBox з аплетом sqlite3. Всі маніпуляції в статті проводяться на Nexus 5 з прошивкою 5.1. Бази даних, доступні для перегляду та редагування, розділені на відповідні програми, можна переглянути на пристрої в тій самій програмі SQLite Debugger, клацнувши меню програми на головному екрані. Отже, як бази даних можуть бути корисними для вас і що може вкрасти зловмисник? Спробуємо розібратися.

INFO

Велика подяка demosfenus за допомогу в написанні запитів SQL.

accounts.db

Розташований у /data/system/ або /data/system/users/0 залежно від версії мікропрограми та містить дані про всі облікові записи, зареєстровані на пристрої. Як ви можете бачити на знімку екрана «Структура Accounts.db» у таблиці облікових записів, з моїм пристроєм пов’язано п’ятнадцять облікових записів різних програм. Майже всім зазначені логіни, для частини є паролі (на малюнку частина видалена) в зашифрованому вигляді.


У таблиці authtokens містяться токени авторизації від додатків, всіх сервісів Google, GMS та інших додатків. На вкладці extras - додаткові ключі та значення, такі як GoogleUserId і список підключених програм/сервісів. У мене їх близько п'ятдесяти, включаючи Talk, YouTube, URL shortener, Wallet та інші.


Не скажу, чи зловмисник може розшифрувати паролі з бази, але отримати доступ до сервісів можна, просто підкинувши базу на інший пристрій. Спробуймо провести такий експеримент. Візьмемо базу зі смартфона Nexus 5 та планшет Nexus 7 із чистою системою (свіжовстановлена ​​5.1 через flash-all.bat з ключем -w, потім root). Після завантаження чистої системинатискаємо «Пропустити» при запиті додавання облікового запису, далі встановлюємо весь софт, прописаний в accounts.db (WhatsApp офіційно не підтримує роботу на планшетах, тому качаємо APK з варезників або 1mobile.com). Далі скидаємо базу зі смартфона, поміщаємо в каталог /data/system/users/0 на планшеті та перезавантажуємося.

Після завантаження бачимо, що на вкладці "Налаштування -> Акаунти" з'явився наш обліковий запис Googleі дав нам повний доступдо всіх пов'язаним програмам. Пошта, за допомогою якої можна змінити пароль від облікового запису, всі контакти з номерами телефонів, Google+, фотографії, файли Google Drive, нотатки, збережені авторизації в мобільному Хроміі так далі. Єдиний неприємний момент- неробочий Play Market, який видає: "Помилка при отриманні даних із сервера rpc: s-7: aec-7". Погуглив текст помилки, можна легко його реанімувати.

Інші програми поводилися по-різному:

Висновок: до останніх трьох програм легко отримати доступ, якщо відвести дані з accounts.db або саму базу.

mmssms.db

А ось і вся наша СМС-листування. Знаходиться вона на шляху /data/data/com.android.providers.telephony/databases/. Спробуємо щось змінити. Наприклад візьмемо СМС з номера 900 - це інформатор Ощадбанку. На скріншоті «СМС від Ощадбанку до та після втручання в mmssms.db» зліва, останнє повідомлення: «ECMC6844 02.05.15 12:49 купівля 450р 210009 KARI Баланс: 3281.16р». Поміняємо його більш цікаве повідомлення, показане праворуч. Для цього відкриваємо базу на пристрої SQLite Debugger. Нас цікавить таблиця SMS. Виділимо необхідні полязапитом:

> SELECT _id, thread_id, address, date, body FROM sms WHERE address = 900

Програма має тач-орієнтований інтерфейс і самі команди можна не писати вручну. Вони підставляються автоматично після виклику меню довгим тапомна значенні або після натискання на відповідне слово в верхньому рядку. Команди показані для зручності використання надалі (наприклад, під час роботи з консоллю чи виклику скриптів Таскером).


Отже, натиснувши на SELECT і відзначивши галочками потрібні поля, отримаємо таблицю, що містить номер запису, номер гілки розмови, номер відправника, дату в UNIX time і текст СМС (див. скріншот «Змінюємо значення в базі mmssms.db»). Довгий тапна останній запис. Програма пропонує вибір дії. Вибираємо Update value. Вводимо потрібний нам текст. За аналогією із попередніми СМС зробимо собі зарахування грошей через банкомат. Змінимо текст на «ECMC6844 05.05.15 10:18 зарахування 1000000р ATM 367700 Баланс: 1003731.16р». Сам запит буде виглядати так:

> UPDATE SMS SET body = "ECMC6844 05.05.15 10:18 зарахування 1000000р ATM 367700 Баланс: 1003731.16р" WHERE _id = 196

Натиснувши на трикутник у правому верхньому кутку, внесемо зміну до рядка. Підженемо час із тексту СМС (05.05.15 10:18) у полі date. Ви можете використовувати будь-який конвертер часу UNIX, наприклад онлайн-калькулятор часових позначок unix. Відповідною датою буде 1430810300. Додайте до кінця три довільні цифри для мілісекунд і вставте отримане значення в поле дати.

> UPDATE sms SET date = 1430810300000 WHERE _id = 196

Дві команди можна об’єднати в одну, ввівши поля даних, які можна редагувати, розділивши їх комами. Натискаємо в правому нижньому кутку кнопку Commit і вносимо зміни до бази. Дивимося, що вийшло. На тому ж скріншоті «SMS від Ощадбанку до і після втручання в mmssms.db» справа видно, що тепер ми багаті люди і маємо на рахунку більше мільйона. Іноді потрібно очистити дані програми, яка обробляє SMS, щоб зміни вступили в силу.


Спробуємо додати до бази нову СМС. Для цього нам знадобляться дві таблиці у базі: threads, яка зберігає порядковий номері заголовок (останнє повідомлення) бесіди/ланцюжка, і sms, де зберігається вся решта інформації. Варіантів подій тут дві.

Варіант 1: додаємо СМС до існуючої розмови.Для цього шукаємо у таблиці sms номергілки розмови - thread_id, що відповідає номеру відправника. Як видно на скріншоті «Зміна значень в базі mmssms.db», для інформатора Ощадбанку це цифра 7. Додамо новий рядок в бесіду, показану на попередньому скріншоті. Заповнюємо наступні поля: thread_id - гілка/нитка розмови; address – номер відправника; person - якщо відправник є у списку контактів; date – час приходу СМС; read - 1 для прочитаного повідомлення; 0 для непрочитаного; type - 1 вхідне, 2 вихідне (є ще 0 - що відправляється і 4 - чернетка); body – текст повідомлення. Для додавання нового рядкау таблицю необхідно виконати таку команду:

INSERT INTO SMS (threadid, address, date, read, type, body) VALUES (7, 900, strftime("%s", "now")*1000, 1, 1, "Текст повідомлення")

Значення strftime("%s", "now")*1000 використовується для вставки поточного часу. Щоб вставити конкретну дату й час, ви повинні використовувати час UNIX із тринадцятьма цифрами. Результат можна побачити на скріншоті «Додати нове SMS до існуючої розмови».


Варіант 2: додаємо нову СМС та створюємо нову гілку розмови.Якщо за аналогією додати рядок з новим номером +7123456789, якого немає в адресній книзі і з яким раніше не було листування, то відправники вказуватимуть «Невідомий відправник» без вказівки номера (див. скрін « Додайте нове SMS і створіть новий ланцюжок» ліворуч). Щоб цього уникнути, необхідно ув'язати ще таблиці threads і canonical_addresses. Спочатку додаємо в canonical_addresses рядок з номером, попутно перевіряючи наявність цього номера в таблиці:

Продовження доступне лише передплатникам

Варіант 1. Оформи передплату на «Хакер», щоб читати всі матеріали на сайті

Підписка дозволить тобі протягом зазначеного термінучитати ВСІ платні матеріали сайту. Ми приймаємо оплату банківськими картками, електронними грошима та переказами з рахунків мобільних операторів.

Знадобилося мені днями знайти якийсь невеликий, але функціональний менеджер баз даних SQLite під Windows. Пропозицій у Мережі виявилася маса, починаючи від простих безкоштовних програм-браузерів БД і, закінчуючи, навороченими утилітами з масою як необхідних, і марних наворотів. У результаті утворився цей огляд. Свій кінцевий вибір я робив, виходячи з таких вимог до програми:

  1. Функціональність. Можливість створювати таблиці, тригери, індекси тощо.
  2. Коректна робота з кодуванням UTF-8
  3. Ціна. Бажано, звичайно, щоб ціна була нульовою, але в межах розумного можна трохи розщедритися.
  4. Наявність російського інтерфейсу. Не важливо, але все-таки зручніше працювати з програмою рідною мовою.
  5. Зручність. Не хотілося б довго і завзято колупатися в інтерфейсі у пошуках необхідних функцій.

Так як осягнути неосяжне неможливо (це я про кількість пропозицій на ринку програмних продуктів), то я вибрав кілька програм різних за своїми можливостями і включив їх у цей огляд.

SQLite Database Browser

Ціна: безкоштовно

Простий у використанні браузер баз даних SQLite. Так як основне призначення програми – перегляд даних, то, відповідно, функціональність обмежена.

Використовуючи SQLite Database Browser можна:

  1. переглянути структуру бази даних
  2. створювати нові таблиці з використанням майстра
  3. створювати індекси
  4. переглядати дані в таблицях і виконувати базові SQL-запити (програма повністю зависає під час виконання запитів типу «CREATE TRIGGER...»).

SQLite Database Browser розуміє UTF-8 і, при необхідності, дозволяє змінити кодування. Російський інтерфейс відсутня.

SQLite3 manager LITE

Сайт виробника: http://www.pool-magic.net/sqlite-manager.htm

Ціна: версія Liteпоширюється безкоштовно .

У порівнянні з попередньою програмою SQLite3 manager LITE виглядає більш функціональним. Крім того, що можна просто переглядати дані в таблицях, також можна переглядати та створювати тригери, індекси, уявлення тощо. Додатково можна експортувати всі мета-дані бази даних. При цьому можна створювати файли з даними для експорту таблиць у Paradox та Interbase.

Також у програмі була зроблена спроба зробити щось на зразок візуального майстра створення запитів на кшталт MS Access, але, на мій погляд, спроба успіхом не увінчалася.

У безкоштовної версіїє один недолік - не розуміє дані кодування UTF-8. Є, звісно, ​​можливість вказати кодування бази даних під час відкриття файлу, але у списку кодувань UTF-8 відсутня. Як працює Full-версія програми я не побачив, т.к. на сайті виробника чорт ногу зломить. Висить якийсь незрозумілий JavaScript, що виводить незрозумілу інфу. Загалом склалося враження, що проект успішно затих.

SQLite Administrator

Ціна: безкоштовно

Досить зручна у використанні та функціональна програма. Вся структура бази даних представлена ​​у вигляді дерева об'єктів, яке можна налаштовувати залежно від своїх переваг. Зважаючи на все SQLite Administrator написаний з використанням , т.к. серед додаткових функцій програми є генерація коду Delphiза виділеним фрагментом SQL. Для створення таблиць, тригерів тощо. використовуються зручні майстри. При використанні цієї програми дуже засмутила відсутність можливості нормальної роботиз UTF-8 і, трохи, але все ж дещо зіпсував враження від російського інтерфейсу - деякі написи не вміщуються у відведене їм місце. тому що при тестуванні використовував дефолтний English.

Якщо вам не важливо використання UTF-8, то качайте SQLite Administrator - не пошкодуєте.

SQLiteManager

Ціна: 49$ Є Demo-версія

SQLiteManager як і попередня програмамає достатньо зручний інтерфейс, чудово розуміє UTF-8 і водночас має ряд своїх "фішок". Серед яких:

  1. Аналізатор SQL-запитів
  2. Перевірка цілісності бази даних
  3. Оптимізація бази даних
  4. Можливість використання власних скриптів у програмі (на мою думку, VBScript) для покращення зручності використання.

До додатковим функціямпрограми можна віднести можливість створення звітів по базі даних. Демо-версія має свої суворі обмеження на запити, наприклад, лише перші 20 записів із набору включаються в результати SELECT. Що стосується зручності використання, то враження сильно зіпсувало мерехтіння при перемальовуванні вікон. У мене не такий вже й древній комп, але навіть при 512 Mb видюшки вікна помітно моргали.

SQLite Maestro

Ціна: від 79$ є Trial-версія на 30 днів .

Взагалі лінійка продуктів від SQL Maestro має величезну кількість продуктів для адміністрування різноманітних баз даних, включаючи SQLite. Перше враження від програми – добре зроблена іграшка для споглядання ззовні. Так SQLite Maestro має весь необхідний мені функціонал, зручне дерево об’єктів бази даних, можливість швидко створювати різні об’єкти бази даних тощо, але після цього досить легко використовувати SQLite Administrator поява багаторівневих заплутаних меню з купою різних опцій, які за великим рахунком не потрібні в принципі, якось моторошно стає працювати з цією програмою. З цієї причини і була виставлена ​​одна за зручність. Ціна теж не особливо порадувала - 79 $. Для мене було б краще, якби вони спростили інтерфейс і знизили цінник хоча б до 50 доларів, тоді б я міг думати про покупку.

SQLite Expert

Ціна: версія Personal - безкоштовно, версія Professional- від 38 $

В цілому, для себе я не надто великих відмінностей версії Personal від Professional . Щоб розібратися з роботою SQLite Expert знадобилося трохи більше п'яти хвилин. Програма має весь той набір функцій, які мені були необхідні. Як і SQLiteManager Expert може перевіряти цілісність бази даних, експортувати дані в CSV або інші формати бази даних, має зручний редактор SQL, майстрів до створення таблиць, індексів, тригерів тощо. Доступ до функцій програми дещо складніший, ніж у SQLite Administrator , але не настільки, щоб відлякувати тільки своїм виглядом:). Загалом, я зупинив свій вибір на SQLite Expert Personal .

Саме ця програма на даному етапімоєї роботи з SQLite показала найкращі результатияк за якістю та зручністю роботи, так і за набором усіх необхідних функцій. Жаль, звичайно, що безкоштовний Administrator не знає, що таке UTF-8 - може в нової версіїпідпраят, тоді, можливо я і перегляну свій вибір.

Книжкова полиця

Назва:Бази даних та Delphi. Теорія та практика

ОписКнига заснована на матеріалах лекцій та практичних занять, розроблених автором, і об'єднує теоретичні основиі практичні аспектирозробки реляційних базданих.

Купити на ЛітРес383 руб.
Автор: Анатолій Хомоненко, Володимир Гофман
Назва:Робота з базами даних у Delphi
Опис: Розглядається використання засобів Delphi для розробки програм баз даних. Даються поняття баз даних, характеризуються елементи та описуються етапи проектування реляційних баз даних, викладено технологію розробки інформаційних систем, висвітлюються прийоми роботи з даними, створення таблиць та додатків баз даних, підготовка звітів.
Купити на ЛітРес151 руб.

SQLite – це база даних, чимось схожа на MySQL. Принципова відмінність SQLite від інших БД в тому, що вся база є одним файлом. Якщо в MySQL базазберігається десь у нетрях сервера і недоступна для перенесення, то SQLite з цим все до неподобства просто: один файл - одна база.

Звичайно ж, сервер повинен підтримувати драйвер SQLite (так само як і будь-який інший БД), але, як правило, зараз з цим проблем немає.

SQLite дозволяє звично працювати з базою через SQL, створювати таблиці, поля тощо. В цілому можна сказати, що SQLite ні в чому не поступається звичною MySQL, за винятком, мабуть більше повільної роботиз "важкими" sql-запитами щодо оновлення даних (insert та update). Але, знову ж таки, це для високонавантажених сайтів.

Величезним плюсом SQLite буде її легка переносимість. Копіювати файл – що може бути простіше? Не потрібно дбати про бекапи, як у MySQL, не потрібно створювати на сервері користувача з паролем, не потрібно створювати саму базу. З SQLite просто беремо та користуємося.

Для роботи з базою даних PHP кращевикористовувати PDO - PHP Data Objects - це т.зв. абстракція, яка пропонує єдиний інтерфейс для роботи з різними базами даних. Теоретично, використовуючи PDO, ви можете переключитися на будь-яку базу даних, не змінюючи запити SQL, наприклад, з MySQL на SQLite. Змінюються лише параметри підключення.

Таким чином SQLite підключатиметься через PDO. Для цього нічого не потрібно, оскільки сам PDO вже включений у PHP, а драйвер SQLite зазвичай також включений на сервери.

Але, перш ніж почати програмувати, необхідно створити саму базу. Наприклад, для MySQL є phpMyAdmin, через який можна виконати різні операції. Є також подібні розробки для SQLite, але я покажу, як це можна зробити браузер FireFox. Для цього вам потрібно лише встановити надбудову.

Щоб додати цей додаток до основного меню FireFox(«гамбургер»), натисніть «Редагувати» та перетягніть піктограму до меню.

Це встановлено, і ви можете ним користуватися.

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

Цей файл можна перемістити (і перейменувати) будь-куди, а потім відкрити за допомогою команди меню Бази даних - підключення бази даних.

Тепер потрібно створити таблицю (або таблиці) у базі даних.

SQLite Manager автоматично створює службові таблиці sqlite_XXX. Ми їх не чіпаємо, і нам вони не заважають.

Таблиця в БД - те місце, де зберігається структурована інформація. Таблиця повинна мати набір полів із заданими властивостями. Наприклад, поле може бути integer - для цілих чисел, або text - для тексту. Кількість полів може бути довільною і визначається тільки завданням веб-майстра.

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

  • id - унікальний номер(автозбільшення)
  • slug- посилання
  • text- вільний текст
  • hits- кількість переглядів

Після того, як таблиця створена, зверніть увагу на блок «SQL оператор, який створив цей об'єкт». У ньому буде SQL-запит, яким можна створити таблицю. Він може стати в нагоді, якщо потрібно створити таблицю в базі через PHP.

На вкладці «Перегляд та Пошук» можна редагувати таблицю. Створимо для прикладу два рядки, де поле slugбуде home і contact. Це будуть дві сторінки: головнаі сайт/contact.

Поле hitsміститиме лічильник переглядів сторінки. Текст може бути будь-яким.

Все, база готова, тепер її можна використовувати.

Ставимо завдання. Нехай у нас буде простенький сайт, який видаватиме по коротке посилання(slug) відповідний текст та кількість переглядів.

Якщо ми зробимо це далі локальному сервері, то нехай сайт буде в каталозі sqlite. У ньому є підкаталог db, куди ми скопіюємо наш pages.sqlite.

Роутінг ми можемо зробити, як описано в попередній статті. Файл.htaccess

Параметри AddDefaultCharset UTF-8 - індекси RewriteEngine на RewriteBase /sqlite/ RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule (.*) /sqlite/index.php?$1

У index.phpсам роутинг буде описаний одним рядком:

$сторінка = ($p = ключ($_GET))? $p: "home";

  • підключіть основу
  • ми робимо вибірку в ньому за $стор
  • відобразити отримані дані
Я навмисне спрощую алгоритм, щоб не ускладнювати php-код.

Існують два варіанти роботи з БД. Перший – це нативний php-код. Він не дуже складний, але безліч параметрів трохи напружує. Тому другий варіант - використання додаткових бібліотек-обгорток. З ними код стає лаконічнішим.

Наведу код index.php у першому варіанті:

setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $sql ="SELECT * FROM pages WHERE slug=:page LIMIT 1"; $sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->execute(array(":page" => $page)); $rows = $sth->fetchAll(); print_r($rows); // тут виводимо дані ) catch (Exception $ e) ( echo $ e-> getMessage (); ) # end of file

Для другого варіанту я використав php-бібліотеку із сайту labaka.ru, яку розмістив у підкаталог lib.

Код index.php:

Даний приклад виводитиме для різних адрес різний текст і при цьому працюватиме лічильник переглядів. Якщо потрібно додати нову сторінку, її досить створити у базі. Для зручності, SQLite Manager можна підключити базу прямо з каталогу сайту.

Тут слід зазначити кілька важливих моментів.

Насамперед, вся робота з PDO повинна полягати в блок try..catch. У такий спосіб відловлюються повідомлення про помилки.

Дані, які відправляються в SQL-запит повинні проходити через валідацію. У PDO, коли використовується попередня підготовка даних (PDO::prepare), виконується примусове екранування параметрів. Це дозволяє захиститись від можливих SQL-ін'єкцій.

Коли підключено базу даних SQLite, якщо файл бази даних відсутній, він буде створений автоматично. На цьому базується створення бази відразу після його підключення та створення необхідних таблиць першим SQL-запитом (про який я написав вище).

Ще одне зауваження щодо SQLite. Оскільки база це файл, його можна завантажити по URL прямо через браузер. Тому каталог із SQLite-файлами краще захищати через.htaccess рядком Deny from all . Або ж розміщувати вище, ніж основний www-каталог.

SQLite може стати в нагоді для невеликих завдань, які вимагають невеликої бази даних: лічильники, голосування, мета-дані сторінок і т.п.

Ви можете до цієї статті.

MV framework підтримує СУБД MySQL та SQLite. Нижче представлена ​​технологія роботи з базою даних SQLite, яка є компактною і швидко переноситься з одного сервера на інший, при цьому має всі необхідні можливості для сучасної СУБД.

MV працює з SQLite за допомогою бібліотеки PDO. На більшості серверів воно включено, але якщо база даних не запускається через відсутність драйвера, то можна прочитати про його налаштування. SQLite збирає всю інформацію в одному файлі "userfiles/database/sqlite/database.sqlite".

Щоб відкрити файл бази даних для роботи з таблицями, необхідно встановити додаток до браузера Mozilla Firefox під назвою SQLite Manager. Додаток дозволяє працювати з базою даних за аналогією до phpMyAdmin для MySQL. https://addons.mozilla.org/ru/firefox/addon/sqlite-manager/

Коли додаток буде встановлено, потрібно запустити SQLite Manager і вибрати файл бази даних "userfiles/database/sqlite/database.sqlite". Після підключення файлу бази даних до SQLite Manager у лівій колонці з'явиться список таблиць.

Для створення нової таблиці необхідно натиснути у верхньому меню "Таблиця -> Створити таблицю", після чого з'явиться вікно для введення полів таблиці.

Для переходу до вже створеної таблиці достатньо натиснути на назву таблиці в лівій колонці. У верхній частині на вкладках можна переглянути структуру таблиці та список записів таблиці.

При подвійному натисканні на запис у таблиці відкриється вікно для редагування полів запису.

Загалом робота в SQLite Manager не сильно відрізняється від роботи в phpMyAdmin для MySQL. Також можна керувати таблицями та індексами, виконувати прямі запити та створювати тригери. Вся робота відбувається лише з одним файлом, який потім копіюється з локального сервера на робочий. При цьому важливо не забувати ставити права на запис для файлу бази даних та папки, в якій він знаходиться. Залежно від конфігурації сервера права можуть бути: 777, 770, 775 та інші.

Налаштування PDO SQLite

Якщо драйвер PDO для SQLite підключено, під час виклику функції phpinfo() можна побачити інформацію про версії драйвера. Якщо ж даної інформації немає, це означає, що драйвер не підключений і його треба включити в налаштуваннях PHP.

У папці бібліотек (розширень) PHP мають бути файли php_pdo_sqlite.dll та php_sqlite3.dll.

У файлі php.ini необхідно розкоментувати рядки для підключення даних бібліотек, після чого потрібно перезапустити веб-сервер.

Після перезапуску сервера в phpinfo() має з'явитися інформація про підключення драйвера PDO для SQLite як на скріншоті вище.

|

Sqlite – це дуже простий і швидкий SQL-механізм із відкритим вихідним кодом. Даний посібник описує встановлення та оптимальне використання Sqlite, на відміну від повнофункціональних СУРБД, таких як Mysql та Postgres, а також розглядає та наводить приклади основного використання CRUD (Create, Read, Update, and Delete).

Не варто думати, що Sqlite створений лише для тестування та розробки. Наприклад, він може забезпечити сайту за скромними підрахунками до 100 000 переглядів на день. Максимальний розмір бази даних Sqlite - 140 терабайт (що більш ніж достатньо), вона може бути набагато швидше повномасштабної СУРБД. Повна база даних та інші необхідні дані зберігаються у звичайному файлі у файловій системі хоста, отже, окремий процес сервера не потрібен (що усуває необхідність взаємодії між процесами).

Оптимальне використання на VPS

Sqlite орієнтується на простоту. Завдяки тому, що ця база даних є повністю внутрішня, вона часто значно швидше, ніж альтернативні варіанти. Sqlite ідеально підходить тим, кому потрібна мобільність (що стосується мов та платформ), простота, швидкість та невелике споживання пам'яті. Недоліки Sqlite видно лише за необхідності читати або писати паралельно до декількох файлів: Sqlite підтримує лише одного редактора; крім того, зазвичай велике запізнення файлової системи може бути незручним при необхідності працювати в Sqlite одночасно кільком користувачам. Останній можливий недолік: синтаксис Sqlite унікальний, хоч і схожий на інші системи SQL. Перейти на іншу систему, переросши Sqlite, досить просто, але це може спричинити деякі витрати ресурсів.

Установка Sqlite на VPS

Модуль sqlite3 є частиною стандартної бібліотеки Python, отже, на стандартній системі Ubuntu та на будь-якій іншій системі зі встановленою бібліотекою Python не знадобиться жодних додаткових установок. Для встановлення інтерфейсу командного рядка Sqlite на Ubuntu використовуйте ці команди:

sudo apt-get update
sudo apt-get install sqlite3 libsqlite3-dev

При необхідності скомпілювати Sqlite з вихідного коду завантажте останню версію autoconf з sqlite.org/download.html. Під час запису:

wget http://sqlite.org/2013/sqlite-autoconf-3080100.tar.gz
tar xvfz sqlite-autoconf-3080100.tar.gz
cd sqlite-autoconf-3080100
./configure
make
make install

Примітки до компілювання з вихідного коду:

  1. Не робіть цього на стандартній Ubuntu, оскільки, найімовірніше, через конфлікт між вже наявною і нещодавно встановленою версіями станеться помилка «header and source version mismatch» («невідповідність заголовних та вихідних файлів»);
  2. Якщо з'явиться, що команда «make» очікує подальшого введення даних, просто зачекайте – компіляція з вихідного коду займає деякий час.

Базовий інтерфейс командного рядка Sqlite

Щоб створити базу даних, запустіть команду:

sqlite3 database.db

де "database" - ім'я бази даних. Якщо файл "database.db" вже існує, Sqlite відкриє його; якщо такого файлу немає, його буде створено. Виведений результат виглядає приблизно так:

SQLite version 3.8.1 2013-10-17 12:57:35
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

Тепер створіть таблицю та внесіть до неї тестові дані. Ця таблиця називається "wines" і складається з чотирьох стовпців: ID, виробник вина, вид вина, країна походження. У таблицю внесено три рядки:

CREATE TABLE wines (id integer, producer varchar(30), kind varchar(20), country varchar(20));
INSERT INTO WINES VALUES (1, "Rooiberg", "Pinotage", "South Africa");
INSERT INTO WINES VALUES (2, KWV, Shiraz, South Africa);
INSERT INTO WINES VALUES (3, "Marks & Spencer", "Pinot Noir", "France");

Отже, була створена база даних та таблиця, до якої внесено деякі записи. Тепер натисніть Ctrl + D, щоб вийти зі Sqlite, і введіть наступне (замінюючи «database» ім'ям своєї БД), що виведе щойно створену базу даних:

sqlite3 database.db

Тепер наберіть:

SELECT * FROM wines;

Будуть виведені щойно внесені записи:


2 | KWV | Shiraz | South Africa
3|Marks & Spencer|Pinot Noir|France

Це все, що потрібно знати про створення та читання в Sqlite. Тепер потрібно ознайомитися з оновленням та видаленням:

UPDATE wines SET country="South Africa" ​​WHERE country="France";

Це оновить базу даних, і всі вина у списку, що походять з Франції, будуть відзначені як Південна Африка. Перевірте результат:

SELECT * FROM wines;

Результат буде такий:

1|Rooiberg|Pinotage|South Africa
2 | KWV | Shiraz | South Africa
3|Marks & Spencer|Pinot Noir|South Africa

Тепер усі вина походять із Південної Африки. Тепер спробуйте видалити KWV з бази даних:

DELETE FROM wines WHERE id=2;
SELECT * FROM wines;

Тепер у списку буде на один запис менше:

Усі основні операції з базами даних виконано. На завершення наведено трохи складніший приклад, що ілюструє використання двох таблиць та базову операцію об'єднання.

Вийдіть із Sqlite за допомогою команди Ctrl+D і знову підключіться до нової бази даних за допомогою

sqlite3 database2.db

Буде створена дуже схожа на «wines» таблиця, а також таблиця «countries», яка зберігатиме назву країни та ім'я її чинного президента. Спочатку створіть таблицю countries і внесіть до неї Південну Африку і Францію (зверніть увагу, можна скопіювати і вставити відразу кілька рядків коду SQLite):

CREATE TABLE countries (id integer, name varchar(30), president varchar(30));
INSERT INTO countries VALUES (1, South Africa, Jacob Zuma);
INSERT INTO countries VALUES(2, "France", "Francois Hollande");

Тепер знову створіть таблицю "wines":

CREATE TABLE wines (id integer, kind varchar(30), country_id integer);
INSERT INTO wines VALUES (1, "Pinotage", 1);
INSERT INTO wines VALUES (2, "Shiraz", 1);
INSERT INTO wines VALUES (3, "Pinot Noir", 2);

Подивіться, які види вина походять із Південної Африки:

SELECT kind FROM wines JOIN countries ON country_id=countries.id WHERE countries.name="South Africa";

Буде виведено такий результат:

Pinotage
Shiraz

Так виконується основна операція об'єднання. Зверніть увагу, Sqlite багато виконує самостійно. Насправді в команді JOIN за замовчуванням використовується INNER JOIN, але можна використовувати тільки ключове слово JOIN. Також не потрібно вказувати "wines.country_id", оскільки це значення однозначне. З іншого боку, якщо ввести команду:

SELECT kind FROM wines JOIN countries ON country_id=id WHERE country_id=1;

Буде виведено повідомлення про помилку: "Error: ambiguous column name: id.". це справедливо, оскільки у обох таблицях існує стовпець «id». Загалом повідомлення про помилку Sqlite допомагають досить швидко виявити та усунути будь-які проблеми, що значно прискорює процес розробки. Щоб отримати докладнішу інформацію про синтаксис, вивчіть офіційну документацію, що містить безліч графіків: sqlite.org/lang_delete.html ; вона дуже корисна, але якщо ви віддаєте перевагу конкретним прикладам, нижче наведено посилання на посібник, що розглядає більшість видів об'єднання: zetcode.com/db/sqlite/joins/ .

Крім того, для Sqlite були розроблені драйвери всіма основними мовами, сам же Sqlite працює на більшості систем.

Tags: ,