Daniel Segovia

Blog personal

Archive for the ‘5.4 PHP y Sqlite’ Category

Transacciones en Sqlite

Hacer un comentario

Una transacción es una secuencia de operaciones realizadas como una sola unidad lógica, ésta debe exponer 4 propiedades.

  1. Atomicidad: Asegura que la operación se ha realizado o no.
  2. Consistencia: Asegura que sólo empieza todo lo que se puede acabar.
  3. Aislamiento: Asegura que una operación no puede afectar a otras. Es decir, la realización de dos o más transacciones sobre la misma información sean independientes y no esto no producirá ningún tipo de error.
  4. Durabilidad: Asegura que una vez realizada la operación, ésta quedará persistente y no podrá deshacerse aunque el sistema.

Sí el motor de base de datos posee estás 4 propiedades éste puede ser considerado ACID Compliant (Atomicity, Consistency, Isolation and Durability)

Veamos el ejemplo de recuperar los datos con una transacción

<?php
$db = new SQLiteDatabase("db.sqlite");
 
// Traigo todos los registros de la tabla personas
$result = $db->query("BEGIN; SELECT * FROM personas; COMMIT;");
 
// ciclo el resultado
while($result->valid()) {
    $row = $result->current();
    echo $row['id'].' - '.$row['nombre'].' - '.$row['apellido'].'<br />';
    $result->next();
}
?>

Como puede observarse en el query poseemos BEGIN; y COMMIT; en medio de nuestra consulta que recupera los datos (los puntos y comas separan cada consulta). Esto se debe a que iniciamos una transacción en la base de datos, BEGIN da comienzo a ésta, luego se realiza el o los querys y por último COMMIT hace efectivos estos querys. Las transacciones nos dan la posibilidad de volver atrás en cualquier momento y deshacer todo lo hecho previamente con ROLLBACK.
Por ejemplo sí tenemos que crear 10 tablas podemos iniciar una transacción, sí por algún motivo los 6 primeros querys tienen la sintaxis correcta y no hacen ningún tipo de colisión y nuestra séptima instrucción da algún error con ROLLBACK podemos deshacer todos los querys después del comienzo de la transacción.

Es un tema muy amplio el de las transacciones y las bases de datos en general, así que como dije al principio del capítulo estaremos más abocados a aprender PHP

Written by Daniel Segovia

octubre 26th, 2011 at 1:32 pm

Recuperar el contenido en Sqlite

Hacer un comentario

El procedimiento es similar a los demás motores de base de datos.
Ejecutamos el query, ciclamos el resultado y cuando no hay más contenido el método nos devolverá false y esto acabará con el ciclo while

<?php
$db = new SQLiteDatabase("db.sqlite");
 
// Traigo todos los registros de la tabla personas
$result = $db->query("SELECT * FROM personas");
 
// ciclo el resultado
while($result->valid()) {
    $row = $result->current();
    echo $row['id'].' - '.$row['nombre'].' - '.$row['apellido'].'<br />';
    $result->next();
}
?>

Written by Daniel Segovia

octubre 24th, 2011 at 1:34 pm

Alta, baja y modificación en Sqlite

Hacer un comentario

Como hemos visto en el ejemplo de creación de tablas con sqlite, solamente tenemos que enviar el código correcto en lenguaje SQL a través del método query, para realizar un ABM seguiremos éste mismo camino.
Tendremos nuestro código SQL y lo enviaremos al motor de base de datos.
Usaremos el modelo de la tabla que ya hemos creado.

Aquí todo en lenguaje SQL

//Insetar (A = alta)
INSERT INTO personas (nombre, apellido) VALUES ('Juan', 'Car');
//Actualizar (M = modificar)
UPDATE personas SET apellido = 'Perez' WHERE id = 5
//Eliminar (B = baja)
DELETE FROM personas WHERE id = 10

Código para insertar en Sqlite

<?php
$db = new SQLiteDatabase("db.sqlite");
// Inserto un registro en la tabla personas
$sql = "INSERT INTO personas (nombre, apellido) VALUES ('Juan', 'Car');";
$db->query($sql);
?>

Código para actualizar en Sqlite

<?php
$db = new SQLiteDatabase("db.sqlite");
// Actualizo el registro id=5 en la tabla personas
$sql = "UPDATE personas set apellido = 'Perez' WHERE id = 5";
$db->query($sql);
?>

Código para eliminar en Sqlite

<?php
$db = new SQLiteDatabase("db.sqlite");
// Elimino el registro id=10 en la tabla personas
$sql = "DELETE FROM personas WHERE id = 10";
$db->query($sql);
?>

Written by Daniel Segovia

octubre 19th, 2011 at 12:33 pm

Tablas en Sqlite

Hacer un comentario

Actualmente no he probado ningún gestor de Sqlite, mi manera para crear las tablas es a la vieja usanza, con el código SQL.
El código SQL (al igual que en los motores de base de datos que ya hemos visto) es simplemente una cadena de texto que mediante un método o función le es enviada a la base de datos para que sea procesado.
Al instanciar la clase sqlite nos encontramos con una lista de métodos, query es el que nos permitirá realizar el envío del código a la base.
Para crear las tablas usaremos el siguiente código SQL

    CREATE TABLE personas (
      id INTEGER PRIMARY KEY,
      nombre VARCHAR(255) NOT NULL,
      apellido VARCHAR(255) NOT NULL
    );

Ahora el ejemplo completo con PHP

<?php
$db = new SQLiteDatabase("db.sqlite");
// Creo la tabla personas
$db->query("
    CREATE TABLE personas (
      id INTEGER PRIMARY KEY,
      nombre varchar(255) NOT NULL,
      apellido varchar(255) NOT NULL
    );
");
?>

Written by Daniel Segovia

octubre 18th, 2011 at 6:04 pm

Posted in 5.4.3 Tablas

Crear una base de datos con sqlite

Hacer un comentario

Crear una base de datos con sqlite es sumamente sencillo, solo basta con instanciar la clase para que esta sea creada.
En la instancia el primer parámetro será el nombre de la base, sí no existe intentara crearla y sí ya previamente existe solamente generará la instancia de la clase y la base quedará seleccionada.

<?php
$bd_nombre = 'base';
 
$objeto = new SQLiteDatabase($bd_nombre, 0666, $error);
if ($error){
    exit($error);
}
?>

Written by Daniel Segovia

octubre 11th, 2011 at 6:48 pm

PHP y Sqlite

Hacer un comentario

SQLite es una librería escrita en C que implementa un motor de base de datos SQL.
Con PHP podemos tener acceso a una base de datos SQL, sin tener que ejecutar un programa de RDBMS separado, esto reduce el tiempo de conexión y también de las transacciones siguientes.
La base de datos y su definición (tablas, índices y los datos), son guardados como un sólo archivo en donde esta corriendo el script. Este diseño simple se logra bloqueando todo el fichero de base de datos al principio de cada transacción.

Sus desarrolladores resaltan que sus principales características:

  • Completo soporte para tablas e índices en un único archivo por base de datos
  • Soporte transaccional
  • Rapidez, unas 2 veces mas veloz que MySQL y PostgreSQL
  • Escaso tamaño de la librería
  • Completa portabilidad.

Written by Daniel Segovia

octubre 6th, 2011 at 4:45 pm