Tässä esimerkki kuvaa tiedon hakua olemassa olevasta tietokannasta. Esimerkissä tietokanta on Sqlite tyyppinen ja sen nimi on db. Ensimmäinen koodin osa kannattaa tehdä pääohjelmaan.
Code Block |
---|
QFileInfo dbfile("dbSqlite"); if(dbfile.exists()) { QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("dbSqlite"); if (!db.open()) { QMessageBox::critical(0, qApp->trUtf8("Projektia ei voitu avata"), qApp->trUtf8("Projektia ei voitu avata (ei tietokantayhteyttä)." ), QMessageBox::Close); return false; } } else { QMessageBox::critical(0, qApp->trUtf8("Tietokantaa ei ole"), qApp->trUtf8("Projektia ei voitu avata (ei tietokantayhteyttä)." ), QMessageBox::Close); return false; } |
Esimerkki funktiosta, joka hakee machine taulusta rivin, jossa ActiveMachine kentän arvo on yksi
Code Block |
---|
int MachineData::GetActiveMachinenID() { int rows,machineid; QSqlQueryModel model; model.setQuery("SELECT machine_id, ActiveMachine, NoCylinders, NoSensors FROM machine WHERE ActiveMachine = 1"); rows= model.rowCount(); if(rows<1) { QMessageBox::critical(0, trUtf8("Koneasetuksissa virhe,MachineData::GetActiveMachinenID"), tr("Asetustietokannassa ei ole koneen asetuksia.\n Kone ei toimi!"), QMessageBox::Close); } if(rows>1) { QMessageBox::critical(0, trUtf8("Koneasetuksissa virhe,MachineData::GetActiveMachinenID"), tr("Asetustietokannassa on useita aktiivisia koneen asetuksia.\n Kone ei toimi!"), QMessageBox::Close); } NumberOfSensors= model.record(0).value("NoSensors").toInt();//sijoitetaan kenttien arvot jäsenmuuttujiin NumberOfCylinders= model.record(0).value("NoCylinders").toInt(); machineid=model.record(0).value("machine_id").toInt(); return machineid; } |
Sql esitys tietokannasta
Code Block |
---|
CREATE TABLE machine (
machine_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
customerName Text,
customerTel Text,
customerContact Text,
machineName Text,
NoCylinders Integer,
NoSensors Integer,
EstablishmentTime DATETIME,
ProjectNumber integer, --tämä on testauskoneen projektin numero siis EI testausprojektin
ActiveMachine Boolean, --1=konekonfiguraatio on käytössä, muilla ehdottomasti 0 muuten kone sekoaa
simulated BOOLEAN NOT NULL
);
|