Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #69, СЕНТЯБРЬ 2004 г.

SqLite: легче не бывает!

Никита Кислицин

Xakep, номер #069, стр. 069-126-3


Практика

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

* sqlite_open("file"). Эта функция открывает для работы файл, содержащий все таблицы твоей базы данных. Функция возвращает указатель на открытую базу данных, и вся дальнейшая работа с базой идет через него. В одном сценарии ты можешь открыть столько БД, сколько тебе потребуется, и без проблем оперировать потоками информации.

* sqlite_query($db, "query"). Эта функция отправляет запрос "query" БД, доступной по идентификатору $db. Функция возвращает указатель на строку с результатами запроса.

* sqlite_fetch_array($result). Функция помещает в двухмерный ассоциативный массив результат запроса. Если результат содержит несколько записей, каждая из них доступна в рамках цикла while, например так:

while ($row = sqlite_fetch_array($result)) {

printf("$row[id1] | $row[id2]\n");

}

* Функция sqlite_close($db) закрывает соединение с базой данных. Эту процедуру необходимо вызывать в конце каждого сценария, чтобы освободить неиспользуемую память и уничтожить указатели.

Давай напишем простенький сценарий, на примере которого ты быстро поймешь, как работать с этой СУБД. Всмотрись в этот код:

Пример простого сценария

<?php

$db = sqlite_open("lite.db");

sqlite_query($db, "CREATE TABLE blah (id INTEGER PRIMARY KEY, name CHAR(255))");

sqlite_query($db, "INSERT INTO blah (name) VALUES ('gorl')");

sqlite_query($db, "INSERT INTO blah (name) VALUES ('cuttah')");;

$res = sqlite_query($db, "SELECT * FROM blah");

while ($re = sqlite_fetch_array($res)) {

echo "$r[name] has $r[id]<br> \n";

}

sqlite_close($db);

?>

Внимательный читатель сразу отметит сходство в синтаксисе работы с mySQL. В самом деле, незначительно отличаются лишь названия функций. В любом сценарии можно просто заменить mysql на sqlite, и тем самым, фактически, будет осуществлен переход на новую технологию! А сейчас я расскажу тебе о дополнительных фишках, которые мне удалось разведать.

Дополнительные фишки

Помимо кучи внутренних особенностей, которые нас не особенно волнуют, SqLite предоставляет программистам кучу дополнительных удобных функций. Они несколько упрощают сценарии и ускоряют процесс извлечения информации из базы. Так, например, одним вызовом функции стало возможно и выполнить запрос, и извлечь данные, сводя на нет весь лишний геморрой. Хотя, конечно, это все очень призрачно. Но факт остается фактом – сами по себе сценарии упрощаются: вместо громоздкой конструкции применяется всего один вызов функции. Более того, если запрос заведомо возвращает только один столбец, при помощи sqlite_single_query() можно сразу получить результат – строку или массив с интересующей информацией. Впрочем, не следует этим злоупотреблять: если результат выборки содержит большое количество данных, объем занятой памяти убьет весь выигрыш производительности.

Назад на стр. 069-126-2  Содержание  Вперед на стр. 069-126-4