Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
Wiki Markup
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
}
 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;
    }
{code}
Esimerkki funktiosta, joka hakee machine taulusta rivin, jossa ActiveMachine kentän arvo on yksi

...


{code
}
 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;
}
{code}
Sql esitys tietokannasta

...



{code
}
 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
);
{code}