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
);
|