10
Jun
08

QT4 y SQLite

SQLite es una pequeña librería multiplataforma escrita en C que contiene un sistema gestor de bases de datos. SQLite no trabaja como las usuales Bases de Datos, con infraestructura cliente/servidor, en cambio SQLite se integra directamente en la aplicación utilizando un archivo para guardar la información.

SQLite puede utilizarse para guardar datos que no requieran gran cantidad de datos como configuraciones, logs, historiales, etc. Actualmente SQLite 3 soporta hasta 2 Terabytes, pero hay que tener en cuenta que SQLite consume al rededor de 256 bytes de memoria por cada 1 MiB de la base de datos.

Qt4 provee integración directa con SQLite, la conexión es bastante sencilla, tanto que es difícil encontrar información sobre el tema :).

Activando SQLite

Lo primero es crear un proyecto de QT4 ya sea usando KDevelop, QDevelop o generándolo uno mismo.

Dentro de KDevelop tenemos que ir a Opciones del Sub Proyecto -> Configuración

QT4 y SQLite

En QDevelop debemos ir al menú Proyecto -> propiedades del proyecto y buscar la opción Bibliotecas Qt

QDevelop y SQLite

En ambos debemos seleccionar las librerías SQL.

Si es un proyecto echo sin una IDE se puede añadir al archivo .pro la variable

QT += sql

Conexión a SQLite

La conexión es de las mas sencillas, no se colocara host ni contraseña, solamente el nombre del archivo que se utilizará para guardar los datos:

#include <QSqlDatabase>

QSqlDatabase baseDatos = QSqlDatabase::addDatabase(“QSQLITE”);

baseDatos.setDatabaseName(“bd.db”);

Si Qt no encuentra el archivo creará uno.

De ahora en adelanta ya podemos utilizar SQLite como si fuese cualquier base de datos, teniendo en cuenta las sentencias que soporta.

Creando la estructura de la Base de Datos

Para crear la estructura de la Base de Datos podemos utilizar una interface como SQLite Data Base Browser o phSQliteAdmin, o bien hacerlo mediante su interfáz de consola:

Creamos una tabla dentro de la base de datos con sus respectivos campos

$ sqlite3 bd.db
SQLite version 3.5.6
Enter “.help” for instructions
sqlite> CREATE TABLE usuarios (
…> id INTEGER PRIMARY KEY,
…> usuario TEXT,
…> clave TEXT);

Podemos verificar lo creado con la instrucción .schema

sqlite> .schema usuarios
CREATE TABLE usuarios (
id INTEGER PRIMARY KEY,
usuario TEXT,
clave TEXT);

También podemos ingresar un dato de prueba para nuestro programa y verificar que se ha insertado correctamente.

sqlite> INSERT INTO usuarios (usuario, clave) VALUES (‘administrador’, ‘administrador’);
sqlite> SELECT * FROM usuarios;
1|administrador|administrador

Para salir utilizamos la instrucción .exit

sqlite> .exit

Ejemplo de utilizacion

Para ejemplo pueden descargar el archivo ejemplo.tar.gz el cual trae un ejemplo minimo de como acceder y leer los datos de una base de datos SQLite con QT4 configurado tanto para compilarse en Linux como en Windows

Enlaces:
SQLite -> SQLite Home Page
Documentacion de SQLite -> http://www.sqlite.org/docs.html
QT4 -> http://trolltech.com/products/qt/

Anuncios

11 Responses to “QT4 y SQLite”


  1. junio 10, 2008 en 6:33 am

    Hola. Me alegra ver que aún estáis activos. Se echa de menos una mayor frecuencia entre entradas, pero en fin, habrá que conformarse.
    Una duda: No me gusta mucho Kde, aunque supongo que no tendré problemas usando QT4 bajo gnome… ¿o sí? Es que tengo una empanada mental que…
    Fdo: Un asiduo de cuando esto se llamaba “Lazarus”.

  2. junio 10, 2008 en 6:46 am

    @Hispa: Gracias por seguir el blog hasta acá 🙂 de echo QT4 funciona perfectamente bajo Gnome y cualquier otro manejador de ventanas/escritorio, por lo que no creo que tengas problemas con eso.

    Y no te preocupes por Lazarus, que también seguirá apareciendo, salvo que aún esta en desarrollo y aunque ya se pueden hacer buenas cosas en esa grandiosa IDE, lo tendré como un hobie del cual no creo separarme durante un tiempo.

    Así que no te preocupes, que Lazarus regresará a llenar espacio en este Blog 🙂

  3. julio 12, 2008 en 8:24 pm

    Hola amigos, por primera vez estoy programando en qt, lastimosamente bajo windows, estoy usando QDevelop y me ha parecido bueno, un bug por ahí le vi, por ejemplo cuando tratas de crear un proyecto y la carpeta ya existe manda el mensaje y se cierra el programa.

    Bueno el problema no es ese, estoy usando SQlite y qt4.4, usando mingw también. Tengo dos comboboxes que cargan sus items desde una consulta hecha en una base de datos sqlite, estos valores cargan perfectamente si ejecuto el programa desde el menú Ejecutar Programa (Launch Program) de QDevelop o si lo lanzo desde la línea de comandos (cmd), pero si lo lanzo con doble click en el explorador de windows o creando un acceso directo no cargan los valores. Extraño comportamiento, alguien sabe que sucede?

    La conexión con la base de datos la hago en la implementación del constructor para la clase VentanaClientes que estoy haciendo, lo hago igual que dice la documentación.

  4. julio 14, 2008 en 9:42 pm

    Es muy probable que cuando hiciste el programa no detecte la carpeta donde se encuentra el proyecto. la base de datos generalmente hace referencia a un archivo y si no está bien proveida la dirección no lo va encontrar.

  5. agosto 7, 2008 en 11:29 pm

    Excelente siempre su blog, al parecer seguimos el mismo camino, comenzando con Lazarus y pasando luego a Qt, sin dudas voy a pasar seguido por aqui :P.
    Saludos, gracias por compartir!

  6. noviembre 19, 2008 en 12:47 am

    hola podrias ayudarme a configurar el qt4 con el eclipse ya segui los pasos con un tutorial pero tengo algunos errores

  7. agosto 21, 2009 en 1:33 pm

    Les recomiendo para la administracion de las tablas SQLite Manager, es un agregado para Firefox, bastante completo, https://addons.mozilla.org/es-ES/firefox/addon/5817.

    Gracias por el aporte!

  8. 8 neinGott
    diciembre 27, 2009 en 4:33 am

    Hola, gracias por poner este ejemplo y explicar algo mas sobre SQLite y de veras que no se encuentra nada sobre como se hace la conexion con QT4 (tenes razon parece bien facil), probare el ejemplo que dejaste mañana, pero hay dos cosas que no me quedan claras:

    Si se agrega ejecutable de SQLite (sqlite3.exe) al path de windows, o si se agrega este ejecutable al proyecto (no me suena correcto, pero mejor pregunto ;-)), porque la verdad no doy como es que el programa ya funcionando va a encontrar el dicho ejecutable para correr

    Otra cosa es que cuando se le manda el archivo de la base de datos, la direccion donde se encuentra este se manda como una ruta relativa o completa, espero haberme explicado bien.

    Gracias de nuevo por la informacion y por tu respuesta
    Saludos desde Guatemala!!!

    neinGott

  9. 9 neinGott
    diciembre 27, 2009 en 6:14 pm

    Me respondo a mi mismo:

    Primero: Aparentemente Qt Creator trae el soporte completo para sqlite, asi que no hay necesidad ni de bajar el binario del mismo, me parece extraño, habrá que realizar mas pruebas ;).

    Segundo: Hay una parte en el codigo que dejaste para la descarga donde se especifica bien la dir donde esta el archivo de base de datos “QDir::toNativeSeparators(QApplication::applicationDirPath()”, entonces si es una ruta absoluta (esa era la palabra).

    Dejo este mensaje para aquellos que llegaron aqui y que tienen las mismas dudas.

    De nuevo GRACIAS por dejar ese codigo, me aclaro mucho.
    Saludos desde Guatemala!!!

    neinGott

  10. 10 Sebastian
    febrero 25, 2012 en 4:13 pm

    Muchas Gracias !!!!!

    Te hago una pregunta algo tonta… para abrir la base de datos ¿que pongo arriba y abajo?

    No entiendo bien el código de verificación:
    ————————–
    QString strSql = “SELECT * FROM usuarios WHERE usuario=\””
    + ledUsuario->text()
    +”\” AND clave=\””
    + ledClave->text() + “\””;
    ————————-
    ¿Tendras algún ejemplo en el cual además de abrirla se pueda visualizar un par de campos de la base?

    Se que soy medio pesado pero me ayudaría mucho, he programado en Qt pero las bases de datos me estan pudiendo.

    Muchas Gracias

  11. 11 viliam
    septiembre 8, 2013 en 10:54 am

    Echa un vistazo a una herramienta gratuita Valentina Studio. Súper cosa!
       Le recomiendo – es mejor gestor para SQLite http://www.valentina-db.com/en/valentina-studio-overview


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


CGSOL 2008

Publicidad CGSOL 2008

A %d blogueros les gusta esto: