基于qt的 Qsqlite3使用

//.cpp文件

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMessageBox>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    db = new QSqlDatabase;
    //判断某个路劲下是否包含某个数据库文件
    if( !db->contains("my.db") ){
        //添加数据库,给定数据库的驱动
        *db = QSqlDatabase::addDatabase("QSQLITE");
        //设置数据库名字
        db->setDatabaseName("my.db");
    }
    //判断数据库文件是否被打开
    if( !db->isOpen() ){
        //打开数据库文件,并判断打开是否成功
        if( !db->open()){
            QMessageBox::warning(this, "警告", "数据库打开失败");
            return;
        }
    }
    //数据库操作
    QString sql = "create table if not exists usr(stuNo varchar(12), name text, age integer);";
    //构造 QSqlQuery 的对象,并用sql进行初始化,就是将sql语句写入 query中
    QSqlQuery query(sql);
    // exec(): 执行sql语句
    if( !query.exec() ){
        QMessageBox::warning(this, "警告", "数据库表创建失败");
        return;
    }
}

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

void Widget::on_pushButton_clicked()
{
    QString stuNo = ui->lineEdit->text();
    QString name = ui->lineEdit_2->text();
    int age = ui->lineEdit_3->text().toInt();

    if(stuNo.isEmpty() && name.isEmpty() && ui->lineEdit_3->text().isEmpty()){
        QMessageBox::warning(this, "警告", "数据不完整");
        return;
    }
    // QString::arg(): 将arg中的数据,替换 %1
    QString sql = QString("insert into usr values('%1', '%2', %3);").arg(stuNo).arg(name).arg(age);
    QSqlQuery query;
    //将sql语句组装到 query中
    query.prepare(sql);
    if( !query.exec() ){
        // query.lastError().text(): 打印sql语句执行的错误信息
        qDebug() << "sql: " << sql << query.lastError().text();
        QMessageBox::warning(this, "警告", "数据插入失败");
    }
}

void Widget::on_pushButton_4_clicked()
{
    QString sql = "select * from usr;";
    QSqlQuery query;
    if( !query.exec(sql) ){
        qDebug() << "sql: " << sql << query.lastError().text();
        QMessageBox::warning(this, "警告", "数据查询失败");
        return;
    }
    int row = 0;
    //query.record().count(): 返回记录中字段的数目
    qDebug() << query.record().count();
    //判断 query中一条记录的首地址是否为真
    while(query.next()){
        // value(QString key): 取出一条记录中字段名为 key的value值
        qDebug() << query.value("stuNo").toString();
        qDebug() << query.value("name").toString();
        qDebug() << query.value("age").toInt();
        qDebug() << "----------------------------------";

        //向表格中插入某行
        ui->tableWidget->insertRow(row);
        //向 tableWidget中 设置 表格项
        ui->tableWidget->setItem(row, 0, new QTableWidgetItem( query.value("stuNo").toString() ));
        ui->tableWidget->setItem(row, 1, new QTableWidgetItem( query.value("name").toString() ));
        ui->tableWidget->setItem(row, 2, new QTableWidgetItem( query.value("age").toString() ));
        row++;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值