SQLite 2.8.

14

SQLlite es una pequeña librería programada en lenguaje C que implementa un completo
motor de base de datos multiplataforma que no precisa configuración. Se distribuye bajo
licencia de dominio público. Es muy rápido y la ventaja fundamental es que permite utilizar un
amplio subconjunto del lenguaje estándar SQL. SQLite destaca también por su versatilidad. El
motor de PHP 5 incluye soporte interno para SQLite.

Combina el motor y el interfaz de la base de datos en una única biblioteca, y almacena los
datos en un único archivo de texto plano. Esto hace que cada usuario pueda crear tantas bases
de datos como desee sin la necesidad de la intervención de un administrador de bases de
datos que gestione los espacios de trabajo, usuarios y permisos de acceso. El hecho de
almacenar toda la base de datos en un único archivo, facilita la portabilidad de los datos, y
solamente tiene la restricción del espacio de disco asignado al usuario en el servidor.

Su potencia se basa fundamentalmente en la simplicidad, lo que hace que no sea una
buena solución en entornos de tráfico muy elevado y/o alto acceso concurrente a datos. SQLite
encapsula toda la base de datos en un único fichero.

En su versión 3, SQLite soporta bases de datos de hasta 2 Terabytes de tamaño, y también
permite la inclusión de campos tipo Blob.

Recomendaciones

Para el correcto aprovechamiento de esta utilidad es necesario por parte del usuario tener
los siguientes conocimientos:

•Creación de paginas web ( HTML, etc … ).
•PHP.
•Conocimientos de bases de datos ( SQL ).

Formas de uso

Podemos utilizar SQLite de dos formas:

•Como gestor de base de datos local en un PC. De esta forma podemos gestionar bases
de datos con SQLite igual que si estuviéramos trabajando con un sistema gestor de base de
datos como MySQL sin necesidad de instalar nada, ya que SQLite se compone de un único
archivo ejecutable.

•Como una extensión más de PHP, utilizando las funcionalidades de SQLite
configuradas, o bien como módulo de PHP, o como librería; sin necesidad de tener instalado o
conectar con un servidor de base de datos. Ofrece un rápido interfaz de base de datos
almacenado en archivo de texto plano.

SQLite como extensión de PHP

Una de las opciones de utilización de SQLite es como extensión de base de datos para
PHP.

Esta opción, ofrece un rápido interfaz de base de datos, al igual que ofrecen otras bases de
datos como MySQL, pero con la ventaja de no tener la necesidad de tener instalado o conectar
con un servidor de base de datos. SQLite tiene prácticamente las mismas funcionalidades y
rapidez que el resto de gestores de base de datos, y los datos se almacenan en un archivo de
texto plano.

SQLite dispone de un completo interfaz orientado a objetos, con distintas funciones que nos
facilitan la manipulación de datos. Funciones muy similares a las que podemos manejar con
MySQL.

Funciones PHP - SQLite

A continuación mostramos una tabla con un breve resumen de las principales funciones.
Para información mas detallada sobre ellas pulse en el siguiente enlace (enlace con el pdf
donde se explican las funciones)
sqlite_array_query
Ejecuta una consulta contra una base de datos y devuelve el
resultado en forma de matriz
sqlite_busy_timeout
Establece la duración del temporizador de ocupado o deshabilita
los temporizadores
sqlite_changes
Devuelve el número de filas que se han modificado en la última
sentencia SQL
sqlite_close Cierra una base de datos SQLite abierta
sqlite_column Obtiene una columna de la fila actual del resultado
sqlite_create_aggregate
Registra una FDU (función definida por el usuario) de grupo
normal para su uso en sentencias SQL
sqlite_create_function
Registra una FDU (función definida por el usuario) normal para
su uso en sentencias SQL
sqlite_current Obtiene la fila actual del resultado en forma de matriz
sqlite_error_string
Devuelve la descripción del error producido a partir de un código
de error
sqlite_escape_string
Escapa una cadena de texto para poder usarla como parámetro
en una consulta
sqlite_exec Ejecuta una consulta que no produce resultado
sqlite_factory
Abre una base de datos SQLite y devuelve un objeto
SQLiteDatabase
sqlite_fetch_all
Obtiene todas las filas del resultado en forma de matriz de
matrices
sqlite_fetch_array Obtiene la siguiente fila del resultado en forma de matriz
sqlite_fetch_column_types

Obtiene una matriz con los tipos de las columnas de una tabla
sqlite_fetch_object Obtiene la siguiente fila del resultado en forma de objeto
sqlite_fetch_single Obtiene la primera columna del resultado en forma de cadena
sqlite_fetch_string Alias de sqlite_fetch_single()
sqlite_field_name Obtiene el nombre de un campo
sqlite_has_more Indica si existen más filas disponibles
sqlite_has_prev Indica si está disponible una fila anterior
sqlite_key Devuelve el índice de la fila actual
sqlite_last_error
Devuelve el código de error del último error producido en la base
de datos
sqlite_last_insert_rowid Devuelve el identificador de fila de la última fila insertada
sqlite_libencoding
Devuelve la codificación de la librería SQLite que se está
empleando
sqlite_libversion Devuelve la versión de la librería SQLite que se está empleando
sqlite_next Se desplaza hasta el siguiente número de fila
sqlite_num_fields Obtiene el número de campos de un resultado
sqlite_num_rows
Obtiene el número de filas de un resultado almacenado
(buffered)
sqlite_open Abre una base de datos de SQLite y la crea si no existía
sqlite_popen Abre una base de datos de SQLite de forma persistente y la
crea si no existía
sqlite_prev Se desplaza hasta el anterior número de fila
sqlite_query
Ejecuta una consulta sobre la base de datos y devuelve un
manejador del resultado
sqlite_rewind Se desplaza hasta el primer número de fila
sqlite_seek
Se desplaza hasta un determinado número de fila de un
resultado almacenado (buffered)
sqlite_single_query
Ejecuta una consulta y devuelve o una matriz para una columna
o el valor de la primera fila
sqlite_udf_decode_binary
Decodifica los datos binarios que se pasan como parámetro a las
funciones FDU (función definida por el usuario)
sqlite_udf_encode_binary
Codifica los datos binarios antes de devolverlos de una FDU
(función definida por el usuario)
sqlite_unbuffered_query
Ejecuta una consulta sobre la base de datos cuyo resultado no
almacena todos los datos devueltos
sqlite_valid Indica si hay más filas disponibles en el resultado

Gestion de las bases de datos SQLite

Existen varias formas para gestionar las bases de datos creadas por SQLite:

•Aplicaciones web como SQLite Manager. Tambien existen otras aplicaciones web de
código libre en la red. (http://www.sqlitemanager.org/ )

•Desde la consola de usuario. ( http://www.sqlite.org )

Ejemplos de uso

• Creación/apertura de la base de datos

Tanto para crear como para abrir una base de datos tenemos que utilizar la siguiente
funcion:
$db=sqlite_open("nombre_basedatos");

Le pasamos como parámetro el nombre de la base de datos. Si la dase de datos existe,
entonces la abrirá, y si no existe la creará y la abrirá. Podemos tener tantas bases de datos
como queramos. La única restricción es el espacioweb de que dispongamos en nuestro
servidor.


•Cerrar la base de datos

Para cerrar la base de datos no tenemos mas que utilizar la siguiente función, pasándole
como parámetro la variable de identificación de la conexión a la base de datos:

sqlite_close($db);


•Lanzar una sentencia SQL

Para ejecutar cualquier sentencia SQL se utiliza la función sqlite_query:

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

sqlite_query($db, "INSERT INTO tabla_prueba(nombre) VALUES ('Antonio')");

Con estas sentencias creamos una tabla llamada tabla_prueba, y con la segunda le
introducimos un dato de prueba.


•Recogida de los resultados de una consulta SQL

Las consultas SQL se realizan también utilizando la función sqlite_query:

$result = sqlite_query($db, "SELECT * FROM tabla_prueba");

El resultado se recoje en una variable de tipo array, la cual podremos manipular a nuestro
antojo.


•Impresión por pantalla de los valores de un array

Para este ejemplo aprovecharemos la variable de tipo array anterior, donde hemos
guardado los resultados de la consulta SQL.

while ($row = sqlite_fetch_array($result)) {
echo "ID --> ".$row["id"]." Nombre --> ". $row["nombre"]."<br>";
}

A continuación vamos a mostrar un ejemplo completo de utilización de la base de datos:
<?
// creamos una conexión la base de datos(le introducimos el nombre del archive donde se
almacena)
$db = sqlite_open("nombre.bd");

// Utilizar la siguiente línea sólo si se necesita crear la tabla
sqlite_query($db , "CREATE TABLE tabla_prueba (id INTEGER PRIMARY KEY, nombre
CHAR(255))");

// inserción de registros
sqlite_query($db, "INSERT INTO tabla_prueba(nombre) VALUES ('Antonio')");
sqlite_query($db, "INSERT INTO tabla_prueba(nombre) VALUES ('Pedro')");
sqlite_query($db, "INSERT INTO tabla_prueba(nombre) VALUES ('Sara')");

// ejecución de consulta de selección
$result = sqlite_query($db, "SELECT * FROM tabla_prueba ");
// muestra de los resultados con un bucle
while ($row = sqlite_fetch_array($result)) {
echo "ID --> ".$row["id"]." Nombre --> ". $row["nombre"]."<br>";
}
// se sierra la conexión a la base de datos
sqlite_close($db);
?>
Resultado del ejemplo anterior

ID --> 16 Nombre --> Antonio
ID --> 17 Nombre --> Pedro
ID --> 18 Nombre --> Sara


Enlaces útiles

• http://es.wikipedia.org/wiki/SQLite

• http://www.sqlite.org/ Sitio Oficial de SQLite (en inglés)

• http://www.zend.com/php5/articles/php5-sqlite.php
Introducción acerca de la extensión de SQLite para PHP5.

• http://necudeco.blogsome.com/2005/08/31/sqlite-con-csharp/
Ejemplos de codigo con SQLite

• http://www.sqlitemanager.org/ Web oficial de la aplicación SQLiteManager