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();
}
优质生活从拆开始
浙公网安备 33010602011771号