Qt笔记——SQLite初探QSqlDatabase QSqlQuery
作者:互联网
先记录一个奇怪的问题:
按照官网手册:
会出现连接成功但创建失败的问题
不知道为啥……更改一下setDataName就ok了??也许是customdb这个名字不能使用??qtDB.db也不能使用!换成其他名字就好了
效果图:
main.cpp
#include <QCoreApplication>
#include <QTextCodec>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QTime>
#include <QSqlError>
#include <QtDebug>
#include <QSqlDriver>
#include <QSqlRecord>
#include <QString>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());//设置中文显示
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//创建数据库
// db.setDatabaseName("cashsystem.db");
db.setHostName("easybook-3313b0");//设置数据库主机名
db.setDatabaseName("qt.db");//设置数据库名
db.setUserName("xdu_caijia");//设定用户名
db.setPassword("wangqiang.");//设定密码
bool ok = db.open();//打开链接
if(ok){
qDebug()<<QStringLiteral("成功打开链接");
}else{
qDebug()<<QStringLiteral("打开链接失败!");
}
//创建数据库表
QSqlQuery query;
bool success=query.exec("create table automobil(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()<<QStringLiteral("数据库表创建成功!");
else
qDebug()<<QStringLiteral("数据库表创建失败!");
//查询
query.exec("select * from automobil");
QSqlRecord rec = query.record();
qDebug() << QStringLiteral("automobil表字段数:" )<< rec.count();
//插入记录
QTime t;
t.start();
query.prepare("insert into automobil values(?,?,?,?,?,?,?,?,?,?)");
long records=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(QStringLiteral("插入失败"));
}
}
qDebug()<<QStringLiteral("插入 %1 条记录,耗时:%2 ms").arg(records).arg(t.elapsed());
//排序
t.restart();
success=query.exec("select * from automobil order by id desc");
if(success)
qDebug()<<QStringLiteral("排序 %1 条记录,耗时:%2 ms").arg(records).arg(t.elapsed());
else
qDebug()<<QStringLiteral("排序失败!");
//更新记录
t.restart();
for(int i=0;i<records;i++)
{
query.clear();
query.prepare(QString("update automobil set attribute=?,type=?,"
"kind=?,nation=?,"
"carnumber=?,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()<<QStringLiteral("更新 %1 条记录,耗时:%2 ms").arg(records).arg(t.elapsed());
//删除
t.restart();
query.exec("delete from automobil where id=15");
qDebug()<<QStringLiteral("删除一条记录,耗时:%1 ms").arg(t.elapsed());
return 0;
//return a.exec();
}
沉迷单车的追风少年 发布了258 篇原创文章 · 获赞 278 · 访问量 12万+ 私信 关注
标签:QSqlQuery,SQLite,ok,Qt,数据库,db,argv,include,QSqlDatabase 来源: https://blog.csdn.net/qq_41895747/article/details/104119168