Projektitiedosto tietokantaesimerkille
Code Block |
---|
TEMPLATE = app
QT += sql
HEADERS = scooterwindow.h \
tietokanta.h
SOURCES = main.cpp \
scooterwindow.cpp \
tietokanta.cpp
|
Pääohjelma
Code Block |
---|
#include <QtGui> #include <QtSql> #include "tietokanta.h" #include "scooterwindow.h" p, li { white-space: pre-wrap; }int main(int argc, char \*argv\[\]) { QApplication app(argc, argv); Tietokanta db; if (\!db.LuoLiityntaTietokantaan()) return 1; db.LuoTietokantaTaulu(0); db.TaytaDemoDataa(); ScooterWindow window; window.resize(800, 600); window.show(); return app.exec(); } |
Tietokannan luonti
Code Block |
---|
#ifndef TIETOKANTA_H #define TIETOKANTA_H #include <QtGui> #include <QtSql> class Tietokanta { public: Tietokanta(); bool LuoLiityntaTietokantaan(); void LisaaRivi(QString name, QString force, QString delta, QString descr); void TaytaDemoDataa(); void LuoTietokantaTaulu(bool tuhotaan_jos_tosi); }; #endif // TIETOKANTA_H |
Code Block |
---|
#include "tietokanta.h" #include <QtGui> #include <QtSql> Tietokanta::Tietokanta() { } bool Tietokanta::LuoLiityntaTietokantaan() { //Luodaan SqLite tietokanta QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("Testidb.dat"); if (!db.open())//avataan ja testataan aukesiko {//Naytetaan virhe, jos niin kavi QMessageBox::warning(0, QObject::tr("Database Error"), db.lastError().text()); printf("DEBUG: connection NOT created\n");//printataan stdio liityntaan tulokset return false; } printf("DEBUG: connection created\n"); return app.exec(); true; } void Tietokanta::LisaaRivi( QString name, QString force, QString delta, QString descr = "no comments" ) { QDateTime now = QDateTime::currentDateTime(); QSqlQuery q; q.prepare("INSERT INTO tbl_data (name, force, delta,time,description) VALUES (?,?,?,?,?)"); q.addBindValue(name); q.addBindValue(force); q.addBindValue(delta); q.addBindValue(now); q.addBindValue(descr); q.exec(); q.clear(); } void Tietokanta::TaytaDemoDataa() { QSqlQuery query; for ( int i = 1,f=0 ; i < 100; i++, f++ ) { QDateTime now = QDateTime::currentDateTime(); QSqlQuery q; q.prepare("INSERT INTO tbl_data (name, force, delta,time,description) VALUES (?,?,?,?,?)"); q.addBindValue("nimi "); q.addBindValue(i*2); q.addBindValue(f+1); q.addBindValue(now); q.addBindValue("descr "); q.exec(); q.clear(); } } void Tietokanta::LuoTietokantaTaulu(bool tuhotaan_jos_tosi) { QSqlQuery q; if (tuhotaan_jos_tosi) { q.prepare("DROP TABLE tbl_data"); q.exec(); } q.clear(); //luodaan sql-kaskyilla tietokantataulun sarakkeet q.prepare("CREATE TABLE tbl_data (" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "name VARCHAR(40) NOT NULL, " "force DOUBLE NOT NULL, " "delta DOUBLE NOT NULL, " "time DATETIME, " "description VARCHAR(80) NOT NULL)"); q.exec(); } |
Tietojen näyttö ikkunassa
Code Block |
---|
#ifndef SCOOTERWINDOW_H
#define SCOOTERWINDOW_H
#include <QWidget>
class QSqlTableModel;
class QTableView;
enum {
Scooter_Id = 0,
Scooter_Name = 1,
Scooter_Force = 2,
Scooter_Delta = 3,
Scooter_Time = 4,
Scooter_Description = 5
};
class ScooterWindow : public QWidget
{
Q_OBJECT
public:
ScooterWindow();
private:
QSqlTableModel *model;
QTableView *view;
};
#endif
|
Code Block |
---|
#include <QtGui>
#include <QtSql>
#include "scooterwindow.h"
ScooterWindow::ScooterWindow()
{
//luodaan malli sql.taululle
model = new QSqlTableModel(this);
//lisataan malliin taulu
model->setTable("tbl_data");
//laitetaan taulu nimen erusteella laskevaan jarjestykseen
model->setSort(Scooter_Name, Qt::AscendingOrder);
//laiteaan sarakkeille otsikot
model->setHeaderData(Scooter_Name, Qt::Horizontal, tr("Name"));
model->setHeaderData(Scooter_Force, Qt::Horizontal, tr("Force"));
model->setHeaderData(Scooter_Delta, Qt::Horizontal, tr("Delta"));
model->setHeaderData(Scooter_Time, Qt::Horizontal, tr("Time"));
model->setHeaderData(Scooter_Description, Qt::Horizontal,
tr("Description"));
//otetaan malli kayttoon
model->select();
//tehdaan taululle nakyma
view = new QTableView;
//laitetaan malli nakymaan
view->setModel(model);
view->setSelectionMode(QAbstractItemView::SingleSelection);
view->setSelectionBehavior(QAbstractItemView::SelectRows);
view->setColumnHidden(Scooter_Id, true);
view->resizeColumnsToContents();
view->setEditTriggers(QAbstractItemView::NoEditTriggers);
QHeaderView *header = view->horizontalHeader();
header->setStretchLastSection(true);
//tehdaan layout
QHBoxLayout *mainLayout = new QHBoxLayout;
//laitetaan layoout paanakymaan
mainLayout->addWidget(view);
setLayout(mainLayout);
//annetaan paaikkunalle nimi
setWindowTitle(tr("Testi applikaatio"));
}
|