MySql drivers, adatbázis kapcsolat

2011.04.23. 13:26 | arabiata | Szólj hozzá!

Címkék: mysql adddatabase mysql drivers adatbazis kapcsolat

 Általában ennél a pontnál kezdődik az anyázás. A leírásban van hivatkozás letöltendő mysql header filokra, meg fordítsuk le, meg hova kellene bemásolni a lefordított dll (linux: so) filet, hogy meg is találja a progi. Egy igen egyszerű megoldás:

1. A képen két fontos beállítás látható jobboldalt:

 

- a QtSql be van jelölve, ez betölti az adatbázis drivereket
- CONFIG += console, ennek segítségével tudunk a qDebug() függvénnyel dolgokat kiiratni a "dos" ablakba windows alatt.

Felmerülhet a kérdés, hogy miért tölti be a netbeans az adatbázis drivereket, míg a Qt Creator nem. Az ok igen egyszerű, és nem informatikai: a MySql átadta az ingyenes drivereket a Netbeans-nek, a Qt Creator-t fejlesztő cégnek pedig beintett.

Ez az egyik igen nyomós érv a Qt Designer + Netbeans combo mellett.

Milyen adatbázis drivereket tudunk elérni a két op. rendszer alatt?

Egy igen bonyolult, hosszú tervezést igénylő programmal tudjuk kiiratni:

#include <QSqlDatabase>

MainForm::MainForm() {

    widget.setupUi(this);

    QStringList x;

    x = QSqlDatabase::drivers();

    widget.listWidget->addItems(x);

}

És a várva várt eredmény:

 

 

 

 

 

 

 

 

 

 

 

 

 Miután minden fontos info birtokába jutottunk, nézzük hogy tudunk az adatbázishoz kapcsolódni.

bool MainClass::db_init() {

 

#ifdef Q_OS_WIN

db_leiro = QSqlDatabase::addDatabase("QODBC");

#else

db_leiro = QSqlDatabase::addDatabase("QMYSQL");

#endif

 

db_leiro.setHostName("localhost");

db_leiro.setDatabaseName("qt_labor");

if (db_leiro.open("stu06", "kilep") == false) {

QMessageBox::critical(0, "Hiba", trUtf8("Nem tudom megnyitni az adatbázist."), QMessageBox::Ok);

return false;

}

return true;

}

 Részletesen:

A futtató op.rendszertől függően töltjük be a drivert. Itt feltételezem, hogy csak windows és linux alatt futhat a progi. Ha van más is, pl. Mac, akkor tovább kell cifrázni.

A db_leiro egy QSqlDatabase típusú változó, késöbb ezt adom át a többi modal ablaknak azok konstruktorában, (pl. login), hogy ne kelljen mindig megnyitogatni az adatbázist. Query létrehozásánál (QSqlQuery query(db_leiro);) használom. A többi gondolom nem okoz gondot:). 

trUtf8 az ékezetes karakterek kiiratását intézi. Az addDatabase utasításban megadhatunk egy, a kapcsolatra utaló latin1 szöveget is. Ennek akkor van szerepe, ha több adatbázishoz kapcsolódunk, és így tudjuk kiválasztani az aktuálisat.

Figyelem: a removeDatabase(kapcsolat neve) utasítást csak akkor hívhatjuk meg eredményesen, ha kilépünk az addDatabase()-t futtató osztályból. Tehát, ha a MainClass-ban van az addDatabase(), akkor az osztályt hívó részben tudjuk futtatni a removeDatabase()-t.

 

int main(int argc, char *argv[]) {

    // initialize resources, if needed

    // Q_INIT_RESOURCE(resfile);

    QApplication app(argc, argv);

    MainClass x;

    x.show();

// ide tehetjük a removeDatabase-t

    // create and show your widgets here

 

    return app.exec();

}

 

 

Legközelebb QTreeWidget

A bejegyzés trackback címe:

https://qtqt.blog.hu/api/trackback/id/tr892849606

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása