QT:控制台数据新增、删除、查询、更新
效果图:
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(); }
优质生活从拆开始