QSqlDatabase(2)实例,QTableView显示数据库表数据

这篇具有很好参考价值的文章主要介绍了QSqlDatabase(2)实例,QTableView显示数据库表数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

1、实现的功能

2、具体的代码实现


前言

想了解QSqlDatabase基本知识的,以及增删改查的用法,可以浏览上一篇文章:

QSqlDatabase(1)基本接口,以及(增删改除)的简单实例_Ivy_belief的博客-CSDN博客

这篇主要实战,写了一个数据动态库。

1、实现的功能

先来看看要实现的页面信息:

QSqlDatabase(2)实例,QTableView显示数据库表数据,QT,数据库,qt,c++,oracle

 数据库的动态库主要实现了:数据库的增、删、改、查的功能。

(1)增加数据的功能;

(2)删除数据的功能;

(3)修改数据的功能;

(4)查找数据的功能;

(5)用QTableView显示数据库表数据;

(6)直接执行sql语句的功能;

2、具体的代码实现

数据库测试工具GUI页面的主要功能:

(1)增加数据:

bool RobotDataBaseManager::addData2DB(string strOrderId, string strEntry, string strMoney, string strPlate, string strType, string strWeight)
{
    if (isOrderIdExist(strOrderId))
        return false;

    QString orderId = QString::fromStdString(strOrderId);
    QString entry = QString::fromStdString(strEntry);
    QString money = QString::fromStdString(strMoney);
    QString plate = QString::fromStdString(strPlate);
    QString type = QString::fromStdString(strType);
    QString weight = QString::fromStdString(strWeight);

    QSqlQuery query;
    QString sql = "INSERT INTO orderData (orderId, entry, money, plate, type, weight) VALUES (:orderId, :entry, :money, :plate, :type, :weight);";

    query.prepare(sql);
    query.bindValue(":orderId", orderId);
    query.bindValue(":entry", entry);
    query.bindValue(":money", money);
    query.bindValue(":plate", plate);
    query.bindValue(":type", type);
    query.bindValue(":weight", weight);

    if (!query.exec())
    {
        qDebug()<<tr("订单Id %1 ,加入缓存失败:%2").arg(orderId).arg(query.lastError().text());
        return false;
    }
    qDebug()<<tr("订单Id %1 已加入缓存").arg(orderId);

    return true;
}

(2)删除数据的功能;

bool RobotDataBaseManager::DeleteDataById(string strOrderId)
{
    qDebug() << "RobotDataBaseManager::DeleteDataById: " << QString::fromStdString(strOrderId);

    QString orderId = QString::fromStdString(strOrderId);

    QSqlQuery query;
    QString sql = "DELETE FROM orderData WHERE orderId=:orderId;";
    query.prepare(sql);
    query.bindValue(":orderId", orderId);
    if (!query.exec())
    {
        qDebug() << "into DeleteDataById ERROR: " << query.lastError().text();
        return false;
    }

    if(m_mutex4OrderId.tryLock(1*1000)==false)
        return false;

    m_curOrderId = orderId;
    m_mutex4OrderId.unlock();

    return true;
}

(3)修改数据的功能;

bool RobotDataBaseManager::UpdateDataById(string strOrderId, string strEntry, string strMoney, string strPlate, string strType, string strWeight)
{
    if (!isOrderIdExist(strOrderId))
        return false;

    QString orderId = QString::fromStdString(strOrderId);
    QString entry = QString::fromStdString(strEntry);
    QString money = QString::fromStdString(strMoney);
    QString plate = QString::fromStdString(strPlate);
    QString type = QString::fromStdString(strType);
    QString weight = QString::fromStdString(strWeight);

    qDebug()<< "orderId: " << orderId;
    qDebug()<< "entry: " << entry;
    qDebug()<< "money: " << money;
    qDebug()<< "plate: " << plate;
    qDebug()<< "type: " << type;
    qDebug()<< "weight: " << weight;

    QSqlQuery query;
    QString sql = "UPDATE orderData SET entry = :entry, money = :money, plate = :plate, type = :type, weight = :weight WHERE orderId=:orderId;";
    query.prepare(sql);

    query.bindValue(":orderId", orderId);
    query.bindValue(":entry", entry);
    query.bindValue(":money", money);
    query.bindValue(":plate", plate);
    query.bindValue(":type", type);
    query.bindValue(":weight", weight);

    if (!query.exec())
    {
        qDebug() << "UpdateDataById ERROR: " << query.lastError().text();
        return false;
    }

    if(m_mutex4OrderId.tryLock(1*1000)==false)
        return false;

    m_curOrderId = orderId;
    m_mutex4OrderId.unlock();

    return true;
}

(4)查找数据的功能;

bool RobotDataBaseManager::getDataById(string strOrderId, string& strEntry, string& strMoney, string& strPlate, string& strType, string& strWeight)
{
    qDebug() << "[数据库]:getDataById 查询所有数据: 开始~~~~~~~~~~~~~~~~~";

    QString orderId = QString::fromStdString(strOrderId);

    QSqlQuery query;
    QString sql = "SELECT * FROM orderData WHERE orderId=:orderId;";
    query.prepare(sql);
    query.bindValue(":orderId", orderId);

    if (!query.exec())
    {
        qDebug() << "into getDataById ERROR: " << query.lastError().text();
        return false;
    }

    while (query.next())
    {
        QString orderId = query.value("orderId").toString();

        qDebug() << "取得1条订单缓存数据: " << orderId;
        if (!orderId.isEmpty())
        {
            strEntry = query.value("entry").toString().toStdString();
            strMoney = query.value("money").toString().toStdString();
            strPlate = query.value("plate").toString().toStdString();
            strType = query.value("type").toString().toStdString();
            strWeight = query.value("weight").toString().toStdString();
        }
    }

    query.exec("SELECT * FROM orderData");

    qDebug() << "[数据库]:SELECT * FROM orderData:";

    while (query.next())
    {
        // 读取字段值
        QString name = query.value("entry").toString();
        QString money = query.value("money").toString();
        QString plate = query.value("plate").toString();
        QString type = query.value("type").toString();
        QString weight = query.value("weight").toString();

        // 输出结果
        qDebug() << "entry:" << name << ", money:" << money << ", plate:" << plate << ", type:" << type << ", weight:" << weight;
    }


    qDebug() << "[数据库]:getDataById 查询所有数据: 结束~~~~~~~~~~~~~~~~~";
    return true;
}

(5)用QTableView显示数据库表数据;

void RobotDataBaseManager::on_btn_showAll_clicked()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "Connection1");
    db.setDatabaseName("trawe.db"); // 数据库文件名


    if (!db.open())
    {
        qDebug() << "Failed to connect to database 1.";
        return;
    }

    QSqlQuery query(db);
    QString selectQuery = "SELECT * FROM orderData";
    if (!query.exec(selectQuery))
    {
        qDebug() << "Failed to select data from trawe.db.";
        return;
    }

    QSqlTableModel * model = new QSqlTableModel(this,db);
    model->setTable("orderData");
    ui->tableView->setModel(model);
    model->select();

    QStringList tables;
    tables << "id"<< "订单id" << "入口" << "金额" << "车牌" << "车型" << "重量" << "时间";
    for(int i = 1 ; i < tables.count(); i++)
        model->setHeaderData(i,Qt::Horizontal,tables[i]);//设置显示框表头显示
    model->setSort(1, Qt::AscendingOrder);//设置按照第0列排序
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置单元格不可编辑
    ui->tableView->horizontalHeader()->setStretchLastSection(true);//设置最后一列填充后面表格
    //ui->tableView->setColumnHidden(0,true);//设置第0行隐藏
    ui->tableView->setColumnWidth(1,100);//设置列宽,界面看起来更舒适
    ui->tableView->setColumnWidth(2,100);//设置列宽,界面看起来更舒适
}

(6)直接执行sql语句的功能;

/*
(1)INSERT INTO orderData (orderId, entry, money, plate, type, weight) VALUES ("63945", "滘口", "99", "粤A777Q1", "客一", "1800");
(2)UPDATE orderData SET entry = "滘口", money = "99", plate = "粤A777Q1", type = "客一", weight = "客一" WHERE orderId="22834";
(3)DELETE FROM orderData WHERE orderId=1234567;
*/
bool RobotDataBaseManager::queryExec(string strSql)
{
    QString sql = QString::fromStdString(strSql);

    QSqlQuery query;
    query.prepare(sql);
    if (!query.exec())
    {
        qDebug() << " queryExec ERROR: " << query.lastError().text();
        return false;
    }

    qDebug() << "[数据库]: sql 语句执行成功: 结束~~~~~~~~~~~~~~~~~";
    return true;
}

上面基本也涵盖主要的代码了。

完整的项目代码已上传,需要的可以下载。

QSqlDatabase实现数据库的基本功能,以及QTableView显示数据库表数据资源-CSDN文库文章来源地址https://www.toymoban.com/news/detail-681015.html

到了这里,关于QSqlDatabase(2)实例,QTableView显示数据库表数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库管理】②实例管理及数据库启动关闭

    用于管理和访问 database. instance 在启动阶段读取初始化参数文件(init parameter files). (parameter file)文本初始化参数文件 -- 静态参数文件. 1)文本文件,必须通过编辑器修改参数. 2)修改参数下次重启实例才生效. 3)pfile参数文件可以不在database server上. 命名方式: init+SID.ora (system paramet

    2023年04月08日
    浏览(95)
  • 数据库单实例升级

    一、单实例环境 , 全时长二个半钟多。详细图文说明到这 下载 1 、停止所有 oracle 相关进程。 Emctlstop  dbconsole Isqlplusctl  stop Lsnrctl  stop sqlplus /nolog sqlconn /as sysdba Connectedtoanidleinstance. sqlshutdown 然后,冷备份下数据库 cp 2 、metalink搜索下载安装 p6810189_10204_Linux-x86 [oracle@linux~]c

    2024年02月02日
    浏览(44)
  • QTableView大数据文件显示(1000万行数据)

    参考: (2条消息) QTableWidget大数据文件显示(1000万行数据)_江南又旧雨的博客-CSDN博客 读取文件时间+表格插入数据时间   需要等待的比较久。 表格后期插入一行数据大概需要0.1ms,1000万行数据,大概得100s得时间。 参考下文博客中得动态加载: (2条消息) QTableWidget大数据文

    2024年02月07日
    浏览(38)
  • 达梦数据库初始化实例

    说明(默认值) INI_FILE 初始化文件 dm.ini 存放的路径 PATH 初始数据库存放的路径 CTL_PATH 控制文件路径 LOG_PATH 日志文件路径 EX

    2024年02月11日
    浏览(71)
  • Qt QTableView 实现数据改变表格自动刷新

    这里提供一份简单的代码示例,实现QTableView实时刷新数据: 在代码中,我们首先创建一个QStandardItemModel数据模型,并设置表格的行数和列数,同时设置表头和填充数据。然后将数据模型绑定到QTableView中,并实现数据变化自动刷新的功能。最后显示QWidget窗口。 在实际开发中

    2024年02月13日
    浏览(45)
  • 大数据ClickHouse(五):数据库引擎介绍与实例演示

    文章目录 数据库引擎介绍与实例演示 一、Ordinary默认数据库引擎 二、MySQL数据库引擎

    2024年02月03日
    浏览(51)
  • MySQL mysqldump备份数据库(附带实例)

    数据库的主要作用就是对数据进行保存和维护,所以备份数据是数据库管理中最常用的操作。为了防止数据库意外崩溃或硬件损伤而导致的数据丢失,数据库系统提供了备份和恢复策略。 保证数据安全的最重要的一个措施就是定期的对数据库进行备份。这样即使发生了意外,

    2024年02月13日
    浏览(219)
  • QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

    如果需要在QT程序中实现与MySQL数据库的交互,那么必不可少的一环就是对Qt MySql数据库驱动的编译。 操作系统:Windows10 专业版 64位 Qt版本:Qt 5.15.2 开发环境Qt安装路径:D:Qt 交叉编译服务器:Ubuntu 18.4 交叉编译服务器Qt安装路径:/opt/Qt 目标芯片:rk3568 目标平台:arm64 Qt安装

    2024年02月11日
    浏览(77)
  • 使用JDBC访问微软Access数据库实例

    之前有使用ODBC来访问Access数据库的,但不方便.   是否可以使用JDBC访问, 网上的说法不一, 也很少有实例参考. //        access由于access并不是作为一项服务运行,所以url的方法对他不适用。  ( 其实这个是不对的. ) //        https://zhuanlan.zhihu.com/p/441219492 //        Access

    2024年02月15日
    浏览(51)
  • 【远程连接 多个SQL SERVER数据库实例】

    在公司电脑上同时安装了SQL SERVER2012和SQL SERVER2019,分别设置了不同的实例,现用VPN连接公司电脑上的两个数据库实例,做一些记录。 如图所示,分别有MSSQLSERVER2012与MSSQLSERVER2019两个不同的实例,分别查看实例对应的TCP/IP 为数据库引擎访问配置 Windows 防火墙 - SQL Server | Micro

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包