Connessione ODBC in Qt
Avendo un database Oracle, volevo connettere una mia applicazione in Qt a questo db per giocarci un pò.
Ho scoperto con molto piacere che è possibile usare ODBC con il driver QODBC, che è già incluso.
Inoltre, il framework supporta diversi db; potete vedere tutto alla pagina dedicata.
Cerchiamo di vedere le varie operazioni da compiere.
Prima di tutto dovete aggiungere il supporto sql dal file di configurazione (il file .pro):
QT += core gui sql
A questo punto creiamo una classe apposita per fare dei test.
Questo il file di intestazione:
#ifndef DATABASE_H
#define DATABASE_H
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
class Database
{
public:
static Database* getInstance();
void execQuery(QString strQuery);
protected:
Database();
private:
static Database* instance;
QSqlDatabase db;
bool dbOpened;
};
#endif // DATABASE_H
Qui aggiungiamo i due import per le funzioni db; le funzioni sono indipendenti dal db in uso, in quanto ci penserà il driver a fare il lavoro sporco.
Questo il file di implementazione:
#include "database.h"
Database* Database::instance = 0;
Database* Database::getInstance()
{
if (instance == 0)
{
instance = new Database();
}
return instance;
}
Database::Database()
{
db = QSqlDatabase::addDatabase("QODBC3");
db.setDatabaseName("");
db.setUserName("");
db.setPassword("");
db.setHostName("");
db.setPort(1521);
dbOpened = db.open();
}
void Database::execQuery(QString strQuery)
{
if (dbOpened)
{
QSqlQuery query(strQuery);
while (query.next()) {
qDebug() << query.value(0).toString();
}
}
else
{
qDebug() << "Db non apeto!";
}
}
(Il tutto condito sa un pò di Singleton).
Nel costruttore creiamo la connessione; dovete solo mettere i parametri del vostro database.
Nella funzione execQuery controlliamo che la connessione sia attiva, e in caso eseguiamo la query passata come parametro.
La query sarà sempre nel classico formato SQL:
SELECT * FROM tbl;
Tanto per fare un esempio veloce.
Enjoy!
qt sql database odbc qodbc3 oracle
Commentami!