#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QSqlError>
#include <QMessageBox> // 引入消息框模块,用于展示用户友好的错误和通知信息
#include <QStringList> // 引入字符串列表类,用于处理数据库表名列表
//Widget构造函数,负责初始化窗口组件和建立到SQLite数据库的连接。
Widget::Widget(QWidget *parent)
: QWidget(parent), // 初始化基类
ui(new Ui::Widget) // 创建用户界面对象指针
{
ui->setupUi(this); // 调用用户界面设置方法,构建界面元素
// 设置数据库驱动为SQLite并指定数据库文件路径
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("D:\\teach\\sqlite3\\mf.db");
// 尝试打开数据库连接,失败则弹出错误消息框
if (!db.open())
{
QMessageBox::critical(this, "数据库错误", "无法打开数据库,请检查路径及权限设置。");
return;
}
// 设置标签文字,提示输入现有表名
ui->label->setText("Existing table name:");
// 获取并显示当前数据库中的所有表名
QStringList strList = db.tables();
for(int i = 0; i < strList.size(); ++i)
{
ui->textEditTable->append(strList.at(i)); // 将每个表名添加到文本编辑框中
}
}
//Widget析构函数,释放用户界面对象所占用的资源。
Widget::~Widget()
{
delete ui; // 销毁用户界面对象
}
//查询按钮点击事件处理槽函数,执行用户输入的SQL查询。
void Widget::on_btnSqlOperator_clicked()
{
QSqlQuery sqlQuery(db); // 创建一个QSqlQuery对象,用于执行SQL查询
// 从lineEdit控件获取用户输入的SQL查询语句
QString queryText = ui->lineEdit->text();
// 尝试执行SQL查询,若执行失败则显示错误信息
if (!sqlQuery.exec(queryText))
{
QMessageBox::warning(this, "查询错误", "执行SQL时发生错误:" + sqlQuery.lastError().text());
return;
}
// 清空textEdit控件,准备显示新的查询结果
ui->textEdit->clear();
// 遍历查询结果,将每一行的"name"和"age"字段值以"name|age"格式追加到textEdit控件中
while (sqlQuery.next())
{
QString name = sqlQuery.value("name").toString(); // 获取"name"列的值
QString age = sqlQuery.value("age").toString(); // 获取"age"列的值(假设)
ui->textEdit->append(name + "|" + age);
}
}
/* 增:insert into 表名 values ( name text , age int ) ;
* 删:delete from 表名 where name = "zy" ;
* 改:updata 表名 set name = "zy" where age = 23 ;
* 查:select * from 表名 ;
* /
12-project-sqlite
最新推荐文章于 2024-07-18 14:34:06 发布