You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

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.

 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

 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

 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
);
  • No labels
You must log in to comment.