数据库
首页 > 数据库> > Qt笔记——SQLite初探QSqlDatabase QSqlQuery

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