Curso de SqLite Studio: para aquellas personas que necesitan aprender Sql tanto a nivel general como para aplicaciones Android. Tema01. Contenidos: 01.01.- Localización y descarga de la …Descripción completa
¿Cómo Instalar SQLite En WindowsDescripción completa
SQLlite
Aprenda SQL
delphi
Android SQLite Database and Content Provider - Tutorial
Membuat Data Mahasiswa dengan Java Netbeans dengan database SQLiteFull description
Membuat Data Mahasiswa dengan Java Netbeans dengan database SQLiteDeskripsi lengkap
Guía ejemplo de SQLite en Xamarin FormsDescripción completa
tutorialFull description
apostilaFull description
programación SQLite
Sqlite: Rápido, ágil, liviano y robusto Gerardo Antonio Cabero, Daniel Maldonado
Cada vez que los desarrolladores nos enfrentamos a nuevos desafíos, es primordial saber optar por la mejor herramienta para el tratamiento de los datos. Desde que en la informática se comenzó a trabajar con datos, la mayor preocupación e interrogante fue cómo manipular esos datos. Hasta hace algunas décadas atrás era un verdadero calvario para el desarrollador, puesto que el mantenimiento se realizaba a través del manejador de archivos del lenguaje con el cual se realizaba la implementación. Aquello desencadenó que surgieran las primeras alternativas para separar el programa del mantenimiento y manipulación de los datos. Fue así que surgieron los primeros motores que cumplían esa función; hoy podemos encontrar grandes titanes, como Oracle, Informix, PostgreSQL, MySQL y Firebird.
l p . m o c . e r a w t f o s @ x u n i l
2
A
un así muchos desarrolladores han optado En su versión 3, SQLite permite base de datos de hasta 2 por una opción que surgió de la necesidad terabytes de tamaño y la inclusión de campos tipo blob (exde buscar agilidad, sencillez y sobre todo, traído de la Wikipedia). cero conguración. Su nombre es SQLite y ha llegado para quedarse... Breve Historia de SQLite Cuando D. Richard Hipp trabajaba desarrollando software para la fuerza naval de los Estados Unidos, comen¿Qué es SQLite? SQLite es un proyecto de dominio público creado por D. Ri- zó a desarrollar SQLite , según él cuenta con sus propias chard Hipp que implementa una pequeña librería de aproxi- palabras: SQLite surgió de una necesidad personal, para madamente 500Kb programada en lenguaje C, que funciona mi propio uso. En enero de 2000 yo estaba trabajando con un equicomo un sistema de gestión de base de datos relacionales. A diferencia de los motores de base de datos convencio- po de la General Dynamics en la Fuerza naval de los nales con la arquitectura cliente-servidor , SQLite es indepen- Estados Unidos, en un proyecto de software, el cual se diente, ya que no se comunica con un motor de base de datos, conectaba a una base de datos Informix, el motor funsino que las librerías de SQLite pasan a integrar la aplicación. cionaba muy bien, pero habíamos tenido problemas para La misma utiliza las funcionalidades de SQLite a través de hacer una reconguración cuando el sistema se reiniciallamadas simples a sub rutinas y funciones. Esto reduce la ba. Luego cambiamos a PostgreSQL, pero administrar latencia en el acceso a la base de datos, debido a que las lla- la base de datos era un problema. Si bien aún estaba madas a funciones son más ecientes que la comunicación luchando para hacer frente a estas cuestiones, surgió la entre procesos. El conjunto de la base de datos (deniciones, idea de escribir un simple motor de base de datos SQL tablas, índices, y los propios datos), son guardados como un que permitiera leer los archivos del disco duro, y luego ser llamados en diferentes solicitudes. Cinco meses más solo chero estándar, en la máquina local.
Linux+ 9/2007
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
programación SQLite
tarde, yo estaba sin un contrato por algunos
Razones para elegir SQLite
Abajo están presentadas varias ventajas de SQLite, con el pensamiento de que sería útil SQLite que pueden ser de ayuda: unos meses y por lo que comencé a escribir
•
en algún problema similar, más adelante.
(Extracto del Prólogo de SQLite escrito por • Richard Hipp).
Tamaño: SQLite tiene una pequeña memoria y una única biblioteca es necesaria para •
Listado 1. Creación de una nueva base de datos $ sqlite3 prueba prueba. .db SQLite version 3.3 3.3. .10
•
Enter ".help" for instructions sqlite> sqlite > CREATE TABLE personal ( ...> ... > id smallint primary key key, , ...> ... > nombre varchar varchar( (25 25) ),
Estructura Sql : CREATE TABLE nombre (campo1 tipo tipo, , campo2 tipo tipo, , campo3 tipo tipo,.., ,.., campoN tipo); tipo );
Listado 2.XXXXXXXXXXXXXXXXXXXX
•
acceder a bases de datos, lo que lo hace ideal para aplicaciones de bases de datos incorporadas Rendimiento de base de datos: SQLite realiza operaciones de manera eciente y es más rápido que MySQL y PostgreSQL Portabilidad: SQLite se ejecuta en muchas plataformas y sus bases de datos pueden ser fácilmente portadas sin ninguna conguración o administración Estabilidad: SQLite es compatible con ACID, reunión de los cuatro criterios de Atomicidad, Consistencia, Aislamiento y Durabilidad SQL: SQLite implementa un gran subconjunto de la ANSI - 92 SQL estándar, incluyendo sub-consultas, generación de usuarios, vistas y triggers Interfaces: SQLite cuenta con diferentes interfaces del API, las cuales permiten trabajar con C++, PHP, Perl, Python, Tcl, groovy, etc. Costo: SQLite es de dominio público, y por tanto, es libre de utilizar para cualquier propósito sin costo y se puede redistribuir libremente.
sqlite> sqlite > .help .databases List names and les of attached databases .dump ?TABLE TABLE? ? ... Dump the database in an SQL text format .echo ON ON| |OFF Turn command echo on or off .exit Exit this program
Características de SQLite SQLite goza de un par de características que lo hacen único, alguna de ellas se detallan a continuación.
.explain ON ON| |OFF Turn output mode suitable for EXPLAIN on or off off. . .header header( (s) ON ON| |OFF Turn display of headers on or off .help Show this message .import FILE TABLE Import data from FILE into TABLE .indices TABLE Show names of all indices on TABLE .mode MODE ?TABLE TABLE? ? Set output mode where MODE is one of of: : csv Comma Comma-separated values column Left Left-aligned columns columns. . (See .width width) ) html HTML
> code insert SQL insert statements for TABLE
Cero Conguración De la forma en que fue concebido y diseñado SQLite, NO necesita ser instalado. No prender, reiniciar o apagar un servidor, e incluso congurarlo. Esta cualidad permite que no haya un administrador de base de datos para crear las tablas, vistas, asignar permisos. O bien la adopción de medidas de recuperación de servidor por cada caída del sistema.
line One value per line list Values delimited by .separator string tabs Tab Tab-separated values tcl TCL list elements .nullvalue STRING Print STRING in place of NULL values .output FILENAME Send output to FILENAME .output stdout Send output to the screen .prompt MAIN CONTINUE Replace the standard prompts .quit Exit this program .read FILENAME Execute SQL in FILENAME .schema ?TABLE TABLE? ? Show the CREATE statements
Portabilidad SQLite puede ser ejecutado en diferentes sistemas operativos, como ser Windows, Linux, BSD, Mac OS X, Solaris, HPUX,AIX o estar embebido en muchos otros como QNX, VxWorks, Symbian, Palm OS, Windows CE. Se pude notar que muchos de ellos trabajan a 16, 32 y 64 Bits. La portabilidad no está dada en sí por el software, sino por la base de datos condensada en un solo archivo, que puede estar situado en cualquier directorio, trayendo como
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
programación SQLite
tos puede llegar a tener acceso. Esto hace que los datos sean más seguros y más difíciles de acceder. Algunos proporcionan la opción de escribir directamente en el disco y pasar por el sistema de cheros todos juntos. Esto aporta un mayor rendimiento, pero a costa de una considerable complejidad de instalación y mantenimiento. Registros de longitud variable Generalmente los motores asignan una cantidad ja de espacio en disco para cada la en la mayoría de los campos de una determinada tabla. Por ejemplo, tomemos un campo de tipo VARCHAR(100), esto signica que el motor le asignará 100 bytes de espacio jo en disco, independientemente de la cantidad de información que se almacene en ese campo. En cambio, SQLite realizará todo lo contrario, utilizando para ello la cantidad de espacio en Listado 3.XXXXXXXXXXXXXXXXXXXXX sqlite> sqlite > .mode list sqlite> sqlite > SELECT * FROM personal personal; ; 1|Juan Juan| |Perez Perez| |YYYXXXZZZ 2|Ramon Ramon| |Gomez Gomez| |ZZZXXXYYY sqlite> sqlite >
Listado 4.XXXXXXXXXXXXXXXXXXXXX sqlite> sqlite > .separator ", " sqlite> sqlite > SELECT * FROM personal personal; ;
disco necesario para almacenar la información real del campo. Tomando el ejemplo anterior, si quisiera almacenar un solo carácter en un cam po denido como VARCHAR(100), entonces un único byte de espacio de disco se consume. Realmente una característica especial para ahorrar espacio en memoria. El uso de registros de longitud variable por SQLite, tiene una serie de ventajas, entre ellas el resultado de un pequeño archivo de base de datos y optimización de la velocidad de la misma, puesto que hay menos información desperdiciada que leer y recorrer.
sqlite> sqlite >
Listado 5.XXXXXXXXXXXXXXXXXXXXX sqlite> sqlite > .mode line sqlite> sqlite > SELECT * FROM personal personal; ; id = 1 nombre = Juan apellido = Perez direccion = YYYXXXZZZ
id = 2 nombre = Ramon apellido = Gomez direccion = ZZZXXXYYY sqlite> sqlite >
Limitaciones Una vez escuché decir que no existía un software al cual no se le encontraran limitaciones. SQLite no está exento de esto, algunas de las limitaciones son las siguientes: •
Pedagógico Algunas veces cuando se está en un ámbito educativo, se tiende a enseñar SQL para administrar las bases de datos. Muchas veces transportar una base a casa no es tarea fácil, por eso SQLite está siendo adoptado de una forma pedagógica. Por ejemplo, los estudiantes pueden enviar vía e-mail las bases de datos a los docentes para su presentación y los docentes realizarán realizarán las observaciones necesarias. Para los estudiantes más avanzados que están interesados en el estudio de cómo trabaja un RDBMS, el código SQLite puede servir como una buena base. Esto no quiere decir que es un modelo exacto de la forma en que los motores de bases de datos se apliquen, sino una forma en la que un estudiante que entiende cómo funciona SQLite puede comprender los principios operativos de otros sistemas.
1, Juan Juan, , Perez Perez, , YYYXXXZZZ 2, Ramon Ramon, , Gomez Gomez, , ZZZXXXYYY
utilizados. Pero estos motores se siguen rigiendo por la ley de derechos de autor. SQLite es diferente ya que en el derecho de autor la ley simplemente no se aplica, todos pueden contri buir, modicar, estudiar y compartir libremente SQLite.
La arquitectura SQLite Cada motor de base de datos compila cada sentencia SQL en algún tipo de estructura de datos interna que luego se utilizará para llevar a cabo la labor de la declaración. En SQLite, compilar la forma de las declaraciones es un breve programa en un lenguaje de máquina como representación. Los usuarios podemos ver la máquina virtual antes poniendo EXPLAIN como palabra clave para una consulta. El uso de la VM dentro de SQLite ha sido un gran benecio para el desarrollo de la biblioteca, ya que proporciona un cruce entre la interfaz de usuario que analiza las sentencias SQL y la parte en la cual la máquina virtual ejecuta el código para calcular el resultado, así también utilizar la capacidad de rastreo de la ejecución de la VM en cada sentencia e imprimir las mismas.
Listado 6.XXXXXXXXXXXXXXX
Licencia de Dominio Público
•
•
Limitaciones en Where: esta limitación está dada por el soporte para clausuras anidadas. Falta de Clave Foránea: se hace caso omiso de las claves foráneas; esto quiere decir, cuando se realice la creación de la tabla desde el modo consola, está permitiendo el uso de la clausura, aunque no realizara el chequeo de la misma. Falta de documentación en español: al momento de escribir este artículo es muy escasa la documentación disponible en español sobre SQLite.
Introducción al uso de SQLite SQLite, al igual que muchos de los motores de bases de datos, posee su administración predenida a través del uso de la consola o terminal, aquellas personas que pudieron administrar antes otros motores como por ejemplo es el caso de MySQL, sabrán que no es el único administrador que se conoce sino más bien existen una amplia gama para la elección, por ejemplo phpMyAdmin. Con SQLite sucede lo mismo: es posible administrarlo desde varios sistemas, como es el caso de phpSQLiteAdmin, Visual SQLite, realSqlserver.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
programación SQLite
Cómo instalar SQLite Su instalación se pude realizar por medio de los repositorios o a través de su fuente, como observaremos a continuación. A través de los repositorios Como ya es costumbre, si tenemos nuestra distribución predilecta y contamos con acceso a Internet o tenemos los DVD de repositorios y contamos con los permisos de super usuario root , tipeamos lo siguiente: aptitude install sqlite3
Si contamos con los códigos fuentes descargados desde el sitio ocial de SQLite http: //www.sqlite.org/download.html , simplemente deberemos realizar los siguientes pasos:
capsula en un sólo archivo que vamos a crear (Listado 1). Como habrán podido observar en el ejemplo, una vez creado el archivo prueba.db (de ahora en adelante nuestra base de datos) y con la ayuda del lenguaje SQL, hemos creado una tabla llamada personal con cuatro campos (id, nombre, apellido, dirección). Podemos observar que la forma de escritura es más cómoda, puesto que podemos escribir de manera prolija el armado de una tabla, con los delimitadores en sentencia “,” y el n de la misma a través del ”;”. Ahora realizaremos la inserción de limitador ”;” algunos datos para el ejemplo que hemos creado de la siguiente manera:
Descomprimimos los fuentes de SQLite en alguna carpeta con tar xzf
sqlite> INSERT INTO personal VALUES(1, 'Juan', 'Perez', 'YYYXXXZZZ');
VALUES(2, 'Ramon', 'Gomez',
Ejecutamos el script ./congure Estructura en SQL: Ejecutamos make install para realizar la instalación en el sistema INSERT INTO TABLA VALUES(val1,val2,val3,.., valn);
Si deseamos instalar SQLite en el sistema operativo Windows, la instalación se realizará de la siguiente forma: descargamos los ejecutables de SQLite, usamos la consola de línea de comandos de Windows cmd, nos posicionamos en la carpeta y ejecutamos el archivo sqlite3.exe, el cual disparará la consola de sqlite3 . Primeros pasos con SQLite Una vez que hemos instalado SQLite en nuestro sistema, nos posicionaremos en algún directorio vacío y realizaremos la creación de una nueva base de datos. Recordemos que él, a diferencia de los otros motores de bases de datos, se en-
Figura 2. Creación de la Base de Datos en consola
SELECT Campo1, Campo2,.., Campo4 FROM Tabla ;
La consulta realizada anteriormente lista todos los campos y todos los registros de la tabla personal , pero es posible listar únicamente los campos que deseamos que aparezcan en la consulta. Para ello los separamos por medio del “,” y además podemos agregarle la cláusula WHERE para poder ltrar registros que cumplan con una determinada condición, por ejemplo:
apellido FROM personal WHERE id <= 2; 1|Juan|Perez 2|Ramon|Gomez sqlite>
'ZZZXXXYYY');
sqlite.tar.gz
• •
Estructura en SQL:
sqlite> SELECT id, nombre,
sqlite> INSERT INTO personal
•
sqlite>
Nuevamente observemos la inserción de los datos con la sentencia INSERT de SQL, haciendo referencia a la tabla y posteriormente los valores para el nuevo registro. Seguramente en algún momento vamos a contar con la necesidad de realizar consultas sobre las tablas creadas. Para este n podemos realizarlo de la siguiente manera: sqlite> SELECT * FROM personal; 1|Juan|Perez|YYYXXXZZZ 2|Ramon|Gomez|ZZZXXXYYY
Una vez vistas estas operaciones básicas como son la creación de una base de datos, la creación de una tabla, agregación de datos a la tabla y realización de consultas, es posible que queramos salir del editor o administrador de SQLite para lo cual tipeamos lo siguiente: sqlite> .quit
Ahora bien, aprendamos algunos comandos especiales para movernos sobre SQLite en modo texto, ya que de esta manera nos vamos a poder mover con mayor facilidad, seguridad y rapidez. La mayoría de las veces SQLite lee las líneas de entrada y las transforma a las de la librería SQLite para luego ejecutarlas. Si una línea de entrada empieza con un punto ("."), es interpretado inmediatamente por el intérprete de SQLite. Estos puntos se utilizan normalmente para cambiar el formato de salida de la consulta, la cual veremos más adelante. Para obtener una lista de los comandos disponibles, podemos tipear en cualquier momento .help o ayuda y nos arrojará la lista que podemos ver en el listado 2. Realicemos una introducción para poder manipular las salidas o congurarlas. Cabe destacar que SQLite3 es capaz de mostrar los resultados de una consulta en ocho diferentes formatos entre los cuales tenemos: csv, column , html , insert , line, tabs, y tcl . Puedes usar .mode o modo, para lograr estas diferentes salidas. La
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
programación SQLite
Una vez dentro de la misma, podemos realizar lo que presenta el listado 3. Ahora bien si utilizas .separator va a cambiar el modo de separación de la consulta, por ejemplo lo vamos a hacer cambiar por una coma y un espacio "," (Listado 4). En el modo line o línea, cada columna de un registro de la base de datos se muestra en una línea por sí mismo. Cada línea está formada por el nombre de la columna, el signo igual "=" y el dato correspondiente. Ahora el separar los registros se realiza por una línea en blanco (Listado 5). En el modo column o columna, cada registro se muestra con una línea separada con los datos alineados en las columnas, miremos el ejemplo presentado en el listado 6. Vemos que por defecto cada columna posee un ancho de 10 caracteres, donde los datos que quizás sean demasiado grandes se pueden truncar o recortar. Afortunadamente para ello podemos ajustar el ancho de la columna con .width como en el siguiente ejemplo: sqlite> .width 12 6
en donde los valores que se coloquen allí son totalmente correspondientes a la columna de la consulta que se va a realizar. El 12 signica que el espacio será de 12 caracteres, 6 es para la columna de apellido y así podemos continuar con los demás. Las etiquetas o nombre de cada columna que aparecen de manera de referencia pueden activarse y desactivarse mediante .header con los valores ON y OFF. Si tomamos el ejemplo anterior podemos verlo mejor en el Listado 7. El modo de salida, que quizás sea muy útil, es el modo insert o insertar. En este modo la salida se formatea para que parezca un INSERT de SQL. Al especicar este nuevo modo, tienes que dar un argumento extra que es Listado 7.XXXXXXXXXXXXXXXXXXXX sqlite> sqlite > .header on sqlite> sqlite > SELECT * FROM personal personal; ; id nombre apellido direccion ------------ ------ ---------- --------1 Juan Perez YYYXXXZZZ 2 Ramon Gomez ZZZXXXYYY sqlite> sqlite >
el nombre de la tabla en la cual se incluirán estos INSERT. Lo vemos mas claro en el ejemplo mostrado en el Listado 8. Para nalizar tenemos el modo html . En este modo SQLite3 escribe los resultados de la consulta en una tabla XHTML, utilizando las famosas y conocidas etiquetas HTML (Listado (Listado 9). Por defecto SQLite3 envía los resultados de una determinada consulta a la salida estándar que es seguramente la terminal o Konsole que utilizas para realizar estas pruebas. Es posible cambiar estas salidas usando el comando .output. Sim plemente hay que colocar el archivo de salida como argumento de .output y todos los resultados de esa consulta serán escritos en ese archivo de salida. Si queremos que vuelva a la salida estándar: .output stdout . Mira el Listado 10. El programa SQLite3 viene con varios comandos que son útiles para analizar el esquema de la base de datos. No hay nada que hagan estos comandos que no pueda hacerse por otros medios. Estos comandos facilitan únicamente un atajo. Por ejemplo, para ver las tablas de nuestra base de datos .tables: sqlite> .tables personal sqlite>
caso omiso de la misma dentro de su estructura. A pesar de ser considerado una librería, SQLite ha abierto un nuevo ENTORNO Y ENFOQUE al tratamiento de base de datos, pasó de ser una simple librería a un esquema mucho más amplio. Desde SQLite Latinoamérica, hemos llamado al mismo esquema como PseudoMotor, algo que aparenta ser un motor pero no lo es . Esto se debe a que contiene dentro de sí mismo muchas características caracter ísticas de los grandes motores de base de datos, como ser: la creación de usuarios, vistas, triger, etc. Otra cualidad interesante que hemos expuesto desde la comunidad es la capacidad de poder denir la integridad referencial referencial a través de los trigger, haciéndolo casi similar a un motor de base de datos, pero manteniendo la sencillez y simplicidad de una librería.
SQLite y los lenguajes de programación En los siguientes párrafos mostraremos a través de algunos ejemplos cómo implementar SQLite para algunos de los lenguajes existentes y algunas cualidades de los mismos. Sqlite y Java Java implementa la conexión a la fuente de datos a través de las librerías JDBC. Desde hace algún tiempo se encuentran disponibles las SQLiteJDBC, en Zentus (www.zentus.com/ sqlitejdbc/ ). ). De allí podremos descargar los JDBC de SQLite para plataformas Linux, Mac OS, y Windows. Para poder trabajar con SQLite y Java debemos realizar una simple conexión. La realizaremos por medio de una clase la cual llamaremos coneccion. Debe contar con la estructura mostrada en el Listado 12.
En SQLite podemos realizar copias de seguridad de las tablas de nuestra base de datos, para ello vamos a ver un ejemplo. Simplemente hay que colocar el nombre del archivo con el argumento .output, luego el modo, en este caso .mode insert personal: para ver las sentencias de inserciones. .schema personal es el esquema de la tabla. Así al nalizar tenemos una copia de seguridad de las tablas de la base de datos (Listado 11). El detalle de los métodos El nombre de conector que se utilizará nos inSQLite: ser o no ser un motor dica Class.forName("org.sqlite.JDBC"); , Ésta es la pregunta que todos deben realizarse en en nuestro caso: org.sqlite.jdbc . este punto. Muchos de los usuarios de software Aquí se indica el driver con que trabajarelibre y desarrolladores, al ver el funcionamiento mos jdbc: sqlite y el nombre de la base de de SQLite, arman que es un motor de base de datos base.sql: datos, aunque en realidad no lo es, puesto que no posee la integridad referencial. En palabras más varConeccion = DriverManager. simples: la integridad referencial referencial es el control de getConnection("jdbc:sqlite:" + la clave foránea. Si bien en SQLite, cuando se nombreDB); crea una tabla, se pude invocar a la palabra reservada forean key. Pero el compilador realizará El ujo para realizar las sentencias abre el siguiente comando:
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
programación SQLite
método más importante de la clase Statement En el Listado 13 está presentado el código de que es executeUpDate el cual permite enviar las recuperación de datos con Java y SQLite. consultas al motor. Su estructura es la siguiente: Se recorre todo el resulset y cada elemento-producto de las consultas, se deposita en la instancia persona que es un objeto de la clase sentancia.executeUpdate vector. Luego podremos listar todo el conte(Sentencia SQL) nido del vector simplemente recorriéndolo y Si se desea crear una tabla se debería de llamar mostrando su contenido. a ese método con la consulta de la siguiente manera: SQLite y PHP En la versión 4 de PHP, SQLite se podía utilizar como base de datos instalando un módulo PEsentancia.executeUpdate(“CREATE CL. A partir de la versión 5 de PHP, SQLite está TABLE personal (id smallint incluido en PHP, por lo que está disponible sin primary key, nombre necesidad de realizar ninguna instalación adiciovarchar(25))”); nal, realmente una ventaja a la hora de prograAhora si se quiere recuperar datos de la tabla re- mar y se puede observar la gran aceptación de cién creada es necesario escribir un método que este pseudo motor. Los nombres de las funciones recupere objetos y objetos de la clase personal. de PHP que permiten utilizar y manipular SQLiListado 8.XXXXXXXXXXXXXX sqlite> sqlite > .mode insert nueva_tabla sqlite> sqlite > SELECT * FROM personal personal; ; INSERT INTO nueva_tabla VALUES VALUES( (1,' ,'Juan Juan',' ','Perez Perez',' ','YYYXXXZZZ YYYXXXZZZ' '); INSERT INTO nueva_tabla VALUES VALUES( (2,' ,'Ramon Ramon',' ','Gomez Gomez',' ','ZZZXXXYYY ZZZXXXYYY' ');
te en PHP empiezan por sqlite_ y son similares a los que permiten acceder a otras bases de datos utilizables desde PHP (MySQL, PostgreSQL, etc). El manual de PHP incluye un capítulo dedicado a SQLite, es por ello que nos va a permitir programar mas rápidamente y acostumbrarnos a la sintaxis de una forma casi inmediata. Creación/Acceso a la base de datos En SQLite, una base de datos es normalmente un chero, aunque también pueden abrirse bases de datos en memoria. Este concepto ya lo vimos al principio. Por esta razón necesitamos un mecanismo para poder abrir la base de d e datos, la función es sqlite_open(). El argumento de sqlite_open() es la ruta del archivo en el servidor (o :memory: en el caso de crear la base de datos en memoria). En caso de que la base de datos no exista, la función se encarga de crear una base de datos nueva. La función devuelve un manejador (handle), que se utiliza en el resto de funciones que acceden a la base de datos. En el siguiente ejemplo, la variable $rutadb almacena la ruta o path de donde se encuentra la base de datos y la variable $db el manejador de la base de datos:
sqlite> sqlite >
Listado 9.XXXXXXXXXXXXXXXXXX
$rutadb = "prueba.db"; $db = sqlite_open($rutadb) or
< > /TABLE TABLE> >,
>,
> y
>
die("No es posible abir la base de datos ");
sqlite> sqlite > .mode html
?>
sqlite> sqlite > SELECT * FROM personal personal; ;
< >
>id id<
< >
>nombre nombre<
< >
>apellido apellido<
< >
>direccion direccion<
< > /TR TR> >
< >
>1
>
>Juan Juan<
>
>Perez Perez<
>
>YYYXXXZZZ YYYXXXZZZ<
>
Consultas a la base de datos Una vez abierta la base de datos, se pueden realizar consultas del lenguaje SQL utilizando varias funciones. Cada función devuelve el resultado de la consulta de forma distinta:
consulta, tipo): devuelve la consulta en forma de matriz sqlite_exec(consulta): devuelve simplemente verdadero o falso, pero no los datos sqlite_query (handle, consulta): devuelve un manejador del resultado sqlite_single_query (handle, consulta, primera_línea): devuelve únicamente una columna o la primera la del resultado sqlite_unbuffered_query (handle, consulta): devuelve la consulta sin prefecht
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
programación SQLite
tabla, se utiliza la consulta CREATE TABLE. Para crear un campo índice hay que denirlo Para añadir un registro a una tabla especíca, se INTEGER PRIMARY KEY, y los demás campos utiliza la consulta INSERT INTO: se crean colocando el nombre que va a llevar
apellido = 'López' WHERE id = '4'"); ?>
Para borrar un registro de una tabla, se utiliza la consulta DELETE FROM. Nuevamente debemos especicar cuál es el registro que deseamos eliminar:
?>
id = '1'");
?>
sqlite_query($db, "CREATE TABLE personal (id INTEGER PRIMARY KEY, nombre, apellido)"); ?>
Ahora bien si lo que deseamos es borrar una tabla, utilizamos la consulta DROP TABLE:
Para modicar un registro de una tabla especíca, se utiliza la consulta UPDATE. Es necesario Quizás, sí lo habrás notado, las consultas SQL identicar con la cláusula WHERE cuál es el son las mismas que implementamos siempre en registro que vamos a modicar: nuestras aplicaciones y son totalmente compati bles y válidas, lo único que varía son las funcio
Integrar SQLite en Python En primer lugar para poder integrar SQLite con Python necesitamos que en Python tengamos instaladas unas librerías que nos van a servir como interfaz para conectar las bases de datos SQLite. Para ello hacemos lo siguiente: $ sudo apt-get install python-pysqlite2
Figura 5. Vista del .header en consola Listado 11.XXXXXXXXXXXXXXXX
Conexión con las bases de datos Ahora ya estamos listos para poder comenzar a trabajar con pysqlite, en primer lugar debemos importar esta librería para poder hacer uso de la misma: >>> from pysqlite2 import dbapi2 as sqlite
sqlite> sqlite > .output backup backup. .sql sqlite> sqlite > .mode insert personal sqlite> sqlite > .schema personal sqlite> sqlite > SELECT * FROM personal personal; ; sqlite> sqlite > .quit
Listado 12.XXXXXXXXXXXXXXXXXXXXXXXX
Con esto ya podemos hacer uso de las librerías. Ahora lo que vamos a hacer es crear una nueva base de datos para poder trabajar sobre la misma. La conexión con la base de datos se realiza instanciando un objeto y enviando como parámetro el archivo, en caso que
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
programación SQLite
>>> cursor.execute('CREATE TABLE personal (id INTEGER PRIMARY KEY, apellido
VARCHAR(50), nombre VARCHAR(50), email VARCHAR(100))')
Ahora que ya tenemos creada nuestra tabla, podemos comenzar a cargarle información, nuevamente convocando el método execute de nuestro objeto cursor: >>> cursor.execute('INSERT INTO personal VALUES (null, "Ramos", "Juan", "[email protected]")') >>> cursor.execute('INSERT INTO personal VALUES (null, "Juarez", "Martin", "[email protected]")')
Figura 6. Salida del formato Html desde consola Listado 13.XXXXXXXXXXXXXXXXXX public personal traertodos traertodos() ()
{
Estos ejemplos son a modo de visualizar el modo en el cual se pueden almacenar datos en nuestra base de datos. La librería pysqlite nos permite almacenar datos de otra manera utilizando variables que por ejemplo hemos recuperado de algún Form o Widget:
Vector persona = new Vector Vector(); (); Resulset rs rs; ;
Una vez que terminamos de hacer los cambios, debemos almacenar estos datos de manera permanente invocando al método commit de nuestro objeto conexion: >>> conexion.commit() Si intentas cerrar una conexión que ha sido modicada sin invocar al método commit , pysqlite plantea un error. Este comportamiento puede causar problemas, sin embargo si ustedes no desean guardar los cambios que se han efectuado pueden convocar al método rollback de nuestro objeto conexion: >>> conexion.rollback()
ID: ID : 1
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Contamos también con el método [(1, "Ramos", "Juan", next(), similar al fetchone() en el sentido en que devuelven una única la. Sin embar"[email protected]"), (2, "Juarez", "Martin", go con este método hay que tener cuidado "[email protected]"), ya que debemos tener un control del recorrido de los datos. Si es que sobrepasamos (3, "Gomes", "Carlos", el límite es posible que nos devuelva un "[email protected]")] error (Listado 15). Nuevamente podemos Creo que es un método muy simple para ver ver la excelente integración de SQLite con el contenido por medio de tuplas, pero quizás Python, un lenguaje interpretado y orientado los datos no tengan un formato adecuado. totalmente a objetos. Para ello existe una forma también muy Pysqlite, la biblioteca integradora que sencilla a través del uso de los iteradores permite armar una interfaz muy simple para (Listado 14). hacer uso de la misma. Utilizando este tipo También podemos hacer uso del método de motor de base de datos, como es SQLite, fetchone() , el cual sólo obtiene una la del podemos lograr aplicaciones móviles de macursor, pero no en forma de lista sino como nera muy segura y conable. una tupla. Es útil para cuando nosotros sólo deseamos ver una única la o quizás una la Conclusión a la vez: Día a día se avanza a pasos agigantados en el desarrollo, pero siempre existe ese desafío que hace al desarrollador denir la >>> cursor.execute herramienta que ha de utilizar para realizar ('SELECT * FROM el manejo de los datos dentro de su implepersonal') >>> print cursor.fetchall()
mentación. En este artículo hemos visto unas opciones de SQLite que tiene la potencia de un motor, condensado en una librería o PseudoMotor. Se pueden observar algunas claras ventajas, como lo es la presencia de las extensiones, para casi todos los lenguajes que existen. Cuando Daniel y yo pusimos a prueba SQLite, lo realizamos frente a los colosos del software libre MySQL y PostgreSQL. Notamos que SQLite es muy rápido en respuesta cuando se realizan las consultas y el manejo de los datos. Esto se debe a que no existe un proceso intermedio para la comunicación con el motor. Cosa que sí realizan los ya mencionados motores. Algunos puntos fuertes fueron la carencia de conguraciones y el tener una base de datos en un solo archivo. No obstante, hay que aclarar que SQLite tiene algunos puntos acos como ser que no es apropiado para realizar aplicaciones cliente/servidor o para implementaciones de gran escala, como puede ser un padrón electoral. Puesto que SQLite se saturaría con las peticiones de los usuarios. Por tal motivo se recomienda el uso para aplicaciones de mediana complejidad. Otro punto a favor que está teniendo, y por ello muchos han optado por migrar a SQLite, está dado en que empresas como Google, han anunciado públicamente la utilización de SQLite en su producto AdSense. Otros claros ejemplos son Philips que utiliza SQLite en el software de alguno sus electrodomésticos y la empresa Symbian que lo ha denido como estándar de base de datos para su sistema operativo. Con respecto a la comunidad de SQLite Latinoamericana invitamos a todos aquellos que se quieran sumar a este proyecto: las puertas se encuentran abiertas.