1. 程式人生 > >QT學習之路————使用QT自帶的QSqlDatabase類簡單操作sqlite資料庫

QT學習之路————使用QT自帶的QSqlDatabase類簡單操作sqlite資料庫

#include "dialog.h"
#include "ui_dialog.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    this->setStyleSheet("background-color:rgb(240, 240, 240);");
    size = 0; //初始化變數
    model = new QStandardItemModel;

    model->setColumnCount(3);

    /**************************設定表頭標籤
    ********************************/
    model->setHeaderData(0,Qt::Horizontal,"ID");
    model->setHeaderData(1,Qt::Horizontal,"User");
    model->setHeaderData(2,Qt::Horizontal,"PassWd");

    //ui->tableView->setModel(model);
    ui->tableView->verticalHeader()->hide();
    ui->tableView->setColumnWidth(0,100);
    ui->tableView->setColumnWidth(1,100);
    ui->tableView->setColumnWidth(2,100);
    ui->tableView->horizontalHeader()->hide();
    ui->tableView->setFrameStyle(false);
    ui->tableView->setStyleSheet("background-color:rgb(240, 240, 240);");
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_pushButton_clicked()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("./student");
    db.open();

    int j=0,i=0;
    QSqlQuery query;
    query.exec("SELECT * FROM user");
    query.last(); //否則定位到結果最後,qt 文件說,這個方法非常慢
   // numRows = query.at() + 1;
   // query.seek(numRows-5);
    do
    {
        i++;
        QStandardItem *itemID = new QStandardItem(QString::number(j));
        model->setItem(j,0,itemID);
        QStandardItem *itemUser = new QStandardItem(query.value(0).toString());
        model->setItem(j,1,itemUser);
        QStandardItem *itemPassWd = new QStandardItem(query.value(1).toString());
        model->setItem(j,2,itemPassWd);

        j++;
    }
    while(query.previous()&&i<2);
    ui->tableView->setModel(model);

    j=0;
    i=0;
    db.close();
}