[QT]Conexion SQLITE en QT 5 (2da Parte)

En la primera parte ya hemos visto como conectarnos a nuestra base de datos Sqlite, ahora debemos empezar a crear consultas, pues retomemos el codigo del proyecto anterior y añadamos un nuevo metodo a nuestro sql.h:

 

1
2
3
4
5
6
7
8
9
10
11
12
#ifndef SQL_H
#define SQL_H
#include <QtSql>
class sql
{
public:
   sql();
   bool conectar();
   void consulta();
   QSqlDatabase db;
};
#endif // SQL_H

Luego definiremos el método en nuestro sql.cpp así:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.......
void sql::consulta()
{
   this->conectar();
   if(db.isOpen())
  {
     QSqlQuery qry;
     qry.exec("CREATE TABLE IF NOT EXISTS admins (id integer primary key autoincrement, user text, passwd varchar[8])"); // Crea Tabla ADMINS solo si no existe.
     QString stmt; //Statement
     QTextStream txtstr(&stmt);
     txtstr << "INSERT INTO admins (user, passwd) values (\"" << "admin" << ", " << "12345" <<"\")";
     if(qry.exec(stmt))
        return true;
     txtstr << "SELECT * FROM admins;
     if(qry.exec(stmt))
     {
         while(qry.next())
           {
           qDebug() << "id:" << qry.value(0).toString();
           qDebug() << "user: " << qry.value(1).toString();
           qDebug() << "paswd: " << qry.value(2).toString();
           }
}

db.close(); }

Si todo salio bien esto debería imprimir:

1
2
3
id: 1
user: admin
passwd: 12345

[QT]Conexion SQLITE en QT 5 (1Era Parte)

Conectar una base de datos SQLITE3 en Qt5 a veces puede ser un poco complicado pero si recordamos a las bases de programación, no es mas que un juego de niños. Pues bien comencemos:

Necesitaremos crear nuestro archivo sqlite.h que contendrá nuestra clase, contendrá esto:

1
2
3
4
5
6
7
8
9
10
11
#ifndef SQL_H
#define SQL_H
#include <QtSql>
class sql
{
public:
    sql();
    bool conectar();
    QSqlDatabase db;
};
#endif // SQL_H

Y nuestro archivo sql.cpp asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "sql.h"
#include 
#include 
#include 
#include 
#include 
sql::sql()
{
}
bool sql::conectar()
{
    if(QSqlDatabase::isDriverAvailable("QSQLITE")) //Verificamos que el driver QSQLITE este instalado.
    {
        db = QSqlDatabase::addDatabase("QSQLITE"); //Definimos que se usara SQLITE como driver
        db.setDatabaseName(QDir::homePath()+QDir::separator()+"data2.sqlite"); //Nuestra db en nuestro Home.
        bool db_ok = db.open(); //Creamos una bandera para ver si se puedo abrir la DB
        return db_ok;  //Retornamos true al metodo.
    }
    else
        qDebug() << "Driver no Disponible";
        return false;
}

Debemos añadir al archivo “.pro” de nuestro proyecto “sql” en el apartado:

1
QT += core gui

y dejarlo asi:

1
QT += core gui sql

De esta manera le decimos al proyeccto que usaremos las bibliotecas SQL de QT.

Con esto culminamos la conexión, en el siguiente apartado les dejare como realizar consultas a la DB a traves de QSqlQuery.

[JAVA]Ejecutar JDialog desde Un JInternalFrame

java

tips

Me costo algo de trabajo encontrar como hacer esta pequeña maniobra de programación  así que la pasteo aquí para recordarlo yo , para hacerlo necesitaremos utilizar el método getFrameForComponent(), del objeto JOptionPane, bueno manos a la obra:

1
2
3
Frame f = JOptionPane.getFrameForComponent(this);
IngresarProductos dialog = new IngresarProductos(f, true);
dialog.show();

De esta forma nuestro JDialog se ejecutara como children de nuestro formPrincipal.

Saludos.