首页 > 其他分享 >QT:控制台数据新增、删除、查询、更新

QT:控制台数据新增、删除、查询、更新

时间:2024-11-09 09:43:57浏览次数:1  
标签:QT int deprecated db 查询 控制台 include your

效果图:

 CH1301.pro 详细代码

QT -= gui
QT += sql

CONFIG += c++11 console
CONFIG -= app_bundle

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

  

main.cpp 详细代码:

#include <QCoreApplication>
#include <QTextCodec>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlRecord>
//#include <QTime>  //不建议使用,将来禁用
#include <QElapsedTimer>
#include <QtDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    // <QTime>  不建议使用,将来禁用,建议改 用 <QElapsedTimer>
    //QTextCodec::setCodecForLocale(QTextCodec::setCodecForLocale()); // 设置显示中文
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setHostName("DESKTOP-O9O3HH7");// 设置主机名称
    db.setDatabaseName("qtDB.db"); // 设置数据库名称
    db.setUserName("zhouhejun");// 设置数据库用户名
    db.setPassword("123456"); //设置数据库密码
    db.open();

    // 创建数据库表
    QSqlQuery query ;
    bool success = query.exec("create table automobile "
                              "( id int primary key, attribute varchar, type varchar,"
                              "kind varchar, nation int, carnumber int,"
                              "elevaltor int, distance int,"
                              "oil int, temperature int ) ");
    if(success)
        qDebug()<<QObject::tr("数据库表创建成功!\n");
    else
       qDebug()<<QObject::tr("数据库表创建失败!\n");
    // 查询
    query.exec("select * from from automobile");
    QSqlRecord rec = query.record();
    qDebug()<<QObject::tr("automobile表字段数:")<<rec.count();

    //插入记录
    QElapsedTimer t; // 运行时间组件
   // QTime t;
    t.start(); //启动一个计时器,统计操作耗时
    query.prepare("insert into automobile values(?,?,?,?,?,?,?,?,?,?)");
    long records = 100 ;// 向表中插入任意的100条记录
    for (int i=0; i<records; i++){
        query.bindValue(0,i);
        query.bindValue(1,"四轮");
        query.bindValue(2,"轿车");
        query.bindValue(3,"富康");
        query.bindValue(4,rand()%100);
        query.bindValue(5,rand()%10000);
        query.bindValue(6,rand()%300);
        query.bindValue(7,rand()%200000);
        query.bindValue(8,rand()%52);
        query.bindValue(9,rand()%100);
        success=query.exec();
        if(!success)
        {
            QSqlError lastError = query.lastError();
            qDebug()<<lastError.driverText()<<QString(QObject::tr("插入失败"));
        }
        else
        {
           qDebug()<< QString(QObject::tr("插入成功,第 "))<<i<<QString(QObject::tr(" 行。"));
        }

    }
    qDebug()<<QObject::tr("插入 %1 条记录,耗时: %2 ms").arg(records).arg(t.elapsed());

    // 排序
    t.restart();//重启计时器
    success=query.exec("select * from automobile order by id desc"); // 降序
    if(!success)
    {
        qDebug()<<QObject::tr("排序 %1 条记录,耗时: %2 ms").arg(records).arg(t.elapsed());
    }
    else{
        qDebug()<<QObject::tr("排序失败!");
    }

    //更新记录
    t.restart();
    for(int i =0; i<records; i++){
        query.clear();
        query.prepare(QString("update automobile set attribute=?,"
                              "type=?, kind=?, elevaltor=?,"
                              "distance=?, oil=?, temperature=?  "
                              "where id= %1").arg(i));
        query.bindValue(0,"四轮");
        query.bindValue(1,"轿车");
        query.bindValue(2,"富康");
        query.bindValue(3,rand()%100);
        query.bindValue(4,rand()%10000);
        query.bindValue(5,rand()%300);
        query.bindValue(6,rand()%200000);
        query.bindValue(7,rand()%52);
        query.bindValue(8,rand()%100);
        success= query.exec();
        if(!success){
            QSqlError lastError= query.lastError();
            qDebug()<<lastError.driverText()<<QString(QObject::tr("更新失败"));
        }
    }
     qDebug()<<QObject::tr("更新 %1 记录,耗时: %1 ms").arg(records).arg(t.elapsed());
    // 删除
    t.restart();
    query.exec("delete from automobile where id = 15 ");
    // 输出操作耗时
    qDebug()<<QObject::tr("删除一条记录,耗时: %1 ms").arg(t.elapsed());
    return 0; // 退出
    //return a.exec();
}

  

标签:QT,int,deprecated,db,查询,控制台,include,your
From: https://www.cnblogs.com/samrv/p/18536338

相关文章

  • 「QT」几何数据类 之 QLine 整型直线类
    ✨博客主页何曾参静谧的博客......
  • 「QT」几何数据类 之 QPoint 整型点类
    ✨博客主页何曾参静谧的博客......
  • 来了,超全MQTT实用示例
    Air201快速入门之MQTT示例合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放音、录音等功能的超小PCBA。内部集成高效、简单、可靠的LuatOS语言,旨在帮助客户降低开发难度,降低研发成本,以及打造超小超低功......
  • ethereum.FilterQuery 日志查询处理自定义事件
    前言:在开发中也是遇到这个问题了,并非常见的Transfer,Approve等在ERC20中定义的事件,只要你的事件在sol文件中存在,那还好处理,但是如果不存在,刚开始接触的时候,你可能就有点懵,我也是找了两天,查阅了很多资料,并没什么niao用,偶然看见了区块浏览器中的log才恍然大悟。问题:Uniswa......
  • 在Windows操作系统中,HKEY_CURRENT_USER\Console 是注册表中的一个键路径,它用于存储与
    在Windows操作系统中,HKEY_CURRENT_USER\Console是注册表中的一个键路径,它用于存储与控制台窗口(例如命令提示符窗口,CMD)的配置和设置相关的数据。以下是HKEY_CURRENT_USER\Console的详细说明:1. 位置路径:HKEY_CURRENT_USER\Console\2. 作用这个注册表项包含了当前用户对控制......
  • PyQt5 详细安装与配置教程及使用
    文章目录Part1:安装PyQt5Part2:配置PyQt5的依赖工具QtDesigner和PyUICPart3:使用QtDesigner设计界面Part4:使用PyUIC将设计好的界面转换为.py文件Part5:通过代码显示ui界面Part1:安装PyQt5需要安装两个库,可直接通过一下命令安装pipinstallPyQt5pipinstallpyq......
  • 【QT】【MYSQL】【WINDOWS】qmysql驱动编译
    文章目录前言一、安装QT,MYSQL二、生成qsqlmysql.dll1.配置mysql.pro2.修改qsqldriverbase.pri3.管理员身份运行x64NativeToolsCommandPromptforVS2022重点!!!!成功执行代码前言提示:参考网上各种安装教程均失败,下面来一个完整qmysql驱动编译,并qt连接数据库操作......
  • QtThread线程同步和缓冲区设计
    线程同步的概念在多线程应用程序中,由于多个线程的存在,线程之间可能需要访问同一个变量。或一个线程需要等待另外一个线程完成某个操作后才能产生相应的动作。例如,在上一个例子中,工作线程产生随机的骰子点数,主线程读取骰子点数并显示,主线程需要等待工作线程产生一个新的骰子......
  • Linux上的各种查询
    在Linux中,有许多命令可以用于查询系统信息、文件和进程等。以下是一些常用的查询命令及其简要介绍:ls:用途:列出目录中的文件和子目录。示例:ls-l(以详细格式显示)或ls-a(包括隐藏文件)。pwd:用途:显示当前工作目录的完整路径。示例:只需输入pwd。cd:用途:更改当前工作目......
  • 【QT项目】QT6项目之基于C++的通讯录管理系统(联系人/学生管理系统)
    目录一.项目背景二.创建工程工程创建添加文件 联系人类 功能类三.功能实现联系人类person.cppperson.h 查查询按钮槽函数返回按钮槽函数findperson.cpp:增addperson.cpp:删deleteperson.cpp:改changeperson.cpp:!!显示!!displayperson.cpp:清除clearp......