QSqlDataBase--查询单词项目

基于sqlite的单词查询系统

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QtWidgets>
#include <QDebug>
#include <QButtonGroup>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;
    QSqlDatabase db;
    void connect2Db();
    void createTable();
    void selectworld();
    bool isDataExists(QString);

private slots:
    void btnClickSlot();

};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

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

    connect(ui->pushButtonSelect,SIGNAL(clicked()),SLOT(btnClickSlot()));
    connect2Db();
}
void Dialog::btnClickSlot(){
    selectworld();
}

Dialog::~Dialog()
{
    if(db.isOpen()){
        db.close();
    }
    delete ui;
}
//连接到数据库
void Dialog::connect2Db(){
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("englishwords.db");

    if(db.open()){
        qDebug()<<"连接成功!";
        createTable();
    }else{
        QString text = db.lastError().text();
        QMessageBox::critical(this,"错误",text);
    }
}

//建表
void Dialog::createTable(){
    QString sql = "CREATE TABLE englishwords(word TEXT PRIMARY KEY,pronunciation TEXT,meaning TEXT)";
    QSqlQuery sq;
    if(sq.exec(sql)){
        //执行SQL的成功or失败
        qDebug()<<"建表成功!";
    }else{
         //输出错误信息
         qDebug()<<sq.lastError().text(); //输出错误信息
    }
}
void Dialog::selectworld(){
       QString word = ui->lineEditW->text();
       if(word == ""){
           QMessageBox::warning(this,"提示","请输入单词!");
           return;
       }
       else if(!isDataExists(word)){
           QMessageBox::warning(this,"提示","数据不存在!");
           return;
       }
    //QString word = ui->lineEditW->text();
    QString sql = "SELECT * FROM englishwords WHERE word = ?";
    QSqlQuery sq;
    sq.prepare(sql);
    sq.addBindValue(word);
    if(sq.exec()){
        ui->textBrowser->clear();
        while(sq.next()){
            QString word = sq.value("word").toString();
            QString pronunciation = sq.value("pronunciation").toString();
            QString meaning = sq.value("meaning").toString();
            QString text;
            text = text+word.append("-")+pronunciation.append("-")+meaning;
            ui->textBrowser->append(text);
        }
    }else{
        QString text = sq.lastError().text();
        QMessageBox::warning(this,"提示",text);
    }

}


bool Dialog::isDataExists(QString word)
{
    QString sql = "SELECT * FROM englishwords WHERE word = ?";
    QSqlQuery sq;
    sq.prepare(sql);  //预处理
    sq.addBindValue(word); //绑定
    sq.exec();  //执行
    return sq.next();

}

ui界面

 运行结果:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值