基于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界面
运行结果: