Qt5.7使用自带SQLITE的小的可视化数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MyLovelyJay/article/details/82148923

实现效果图:
QT5.7SQLITE数据库运用,实现的小系统

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QDebug>
#include <QSqlError>
#include <QColorDialog>
#include <QListWidget>


QSqlQuery query;
QSqlDatabase db;
QSqlQueryModel*model;

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


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


void Widget::on_creat_sql_Button_clicked()
{
    bool query_OK=0;
    db=QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("stu.db");
    bool ok=db.open();
    if(ok)
       QMessageBox::information(this,"Information","open sucessfully");
    else
       QMessageBox::information(this,"Information","open fail");
    QSqlQuery query;
    query_OK= query.exec("create table stu(name vchar primary key,sex vchar ,number vchar)");
    if(query_OK)
    {
        qDebug()<< "create table success!";
    }
    else
    {
        qDebug()<< "create table fail!"  << db.lastError();

    }
    show_view();
}



void  Widget::show_view()
{
   model = new QSqlQueryModel(this);
   model->setQuery("select * from stu");
   model->setHeaderData(0,Qt::Horizontal,tr("Name"));
   model->setHeaderData(1,Qt::Horizontal,tr("Sex"));
   model->setHeaderData(2,Qt::Horizontal,tr("Number"));
   ui->tableView->setModel(model);
}


void Widget::on_save_pushButton_clicked()
{
    name=ui->name_lineEdit->text();
        sex=ui->sex_comboBox->currentText();
        number=ui->number_lineEdit->text();
        if(name.isEmpty() || sex.isEmpty() || number.isEmpty())
        {
            QMessageBox::warning(this,"Incomplete information","error");
            return;
        }
        QString insert_buf;
        QSqlQuery query;
        insert_buf=QObject::tr("insert into stu values('%1','%2','%3')").arg(name,sex,number);
        query.exec(insert_buf);
        show_view();
        clear_focus();

}



void Widget::clear_focus()
{
   ui->name_lineEdit->clear();
   ui->number_lineEdit->clear();
   ui->name_lineEdit->setFocus();
}




void Widget::on_find_pushButton_clicked()
{
    find_buf=ui->find_lineEdit->text();
       QSqlQuery query;
       query.exec("select * from stu");
       query.isActive();
       while(query.next())
       {
           QString ele0=query.value(0).toString();
           QString ele1=query.value(1).toString();
           QString ele2=query.value(2).toString();
           if((ele0==find_buf) || (ele1==find_buf) || (ele2==find_buf))
           {
              ui->name_lineEdit->setText(ele0);
              ui->sex_comboBox->setCurrentText(ele1);
              ui->number_lineEdit->setText(ele2);
              return;
           }
        }
       QMessageBox::information(this,"Not Find","No this record",QMessageBox::Ok);
}



void Widget::on_delete_pushButton_clicked()
{
    QString delete_buf;
      delete_buf=ui->delete_lineEdit->text();
       QSqlQuery query;
      query.exec("select * from stu");
      query.isActive();
      QString insert_buf;
      while(query.next())
      {
          QString ele0=query.value(0).toString();
          QString ele1=query.value(1).toString();
          QString ele2=query.value(2).toString();
          if((ele0==delete_buf) || (ele1==delete_buf) || (ele2==delete_buf))
          {
             if(ele0==delete_buf)
             {
                insert_buf=QObject::tr("delete from stu where name='%1'").arg(delete_buf);
             }
             else if(ele0==delete_buf)
             {
                insert_buf=QObject::tr("delete from stu where sex='%1'").arg(delete_buf);
             }
             else if(ele0==delete_buf)
             {
                insert_buf=QObject::tr("delete from stu where number='%1'").arg(delete_buf);
             }
             bool ok=query.exec(insert_buf);
             if(ok)
                 QMessageBox::information(this,"delete successfully","Ok",QMessageBox::Ok);
             else
                 QMessageBox::information(this,"delete fail","Error",QMessageBox::Ok);
             show_view();
             return;
          }
      }
      QMessageBox::information(this,"Delete Error","No this record",QMessageBox::Ok);
}


void Widget::on_change_pushButton_clicked()
{
    ui->delete_lineEdit->setText(find_buf);
       on_delete_pushButton_clicked();
       on_save_pushButton_clicked();
       ui->delete_lineEdit->clear();
}


void Widget::on_pallette_clicked()
{
    //颜色对话框设置
    QColorDialog::setCustomColor(0,QRgb(0x0000FF));
    //定义QColor接收值
    QColor color = QColorDialog::getColor(QColor(0,255,0));
    //定义QPalette(调色板类)
    QPalette p = palette();
    //调色板接收颜色
    p.setColor(QPalette::WindowText,QColor(color));
    //给label 绑定颜色
}

其实都只是很基本的数据库的运用而已,其中需要注意的地方是似乎在每个函数中操作数据库的时候,都需要先QSqlQuery query;即时声明了QSqlQuery query为全局对象,如果在各个函数中不声明QSqlQuery query的话依然会报错,作为新手表示不太懂,希望指点。
完整项目源码地址在我的github中下载:
https://github.com/impressJay/QT5.7SQLITE

猜你喜欢

转载自blog.csdn.net/MyLovelyJay/article/details/82148923
今日推荐