效果图:
CH1301.pro 详细代码
QT -= gui QT += sqlCONFIG += 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.0SOURCES += \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");elseqDebug()<<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(); }