12-project-sqlite

#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 表名 ;
 * /

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值