QT操作Sqlite数据库

#include <QtCore/QCoreApplication>
#include <QtCore>
#include <QApplication>
#include <QTextCodec>
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlQuery>
#include <QTime>
#include <QSqlError>
#include <QtDebug>
#include <QSqlDriver>
#include <QSqlRecord>
#include <stdio.h>


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("test.db");
    if(!db.open())
    {
        QMessageBox::critical(0,QObject::tr("无法打开数据库,请检查驱动"),QObject::tr("出错了"),QMessageBox::Ok);
        return -1;
    }
    QSqlQuery query;
    query.exec("drop table if  exists mobile");

    bool success=query.exec("create table mobile"
                            "(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("数据库表创建成功!");
    }else{
        qDebug()<<QObject::tr("数据库表创建失败!");
    }
    QTime time;
    time.start();
    query.prepare("insert into mobile 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()<<QObject::tr("插入失败");

        }

    }
    qDebug()<<QObject::tr("插入 %1 条记录,耗时: %2 ms").arg(records).arg(time.elapsed());
    //排序
    time.restart();
    success=query.exec("select * from mobile order by id desc ");
    if(success)
    {
        qDebug()<<QObject::tr("排序: %1 条记录,耗时: %2 ms").arg(records).arg(time.elapsed());
        
    }else{
        qDebug()<<QObject::tr("排序失败!");
    }
    time.restart();
    for(int i=0;i<records;i++)
    {
        query.clear();
        query.prepare(QString("update mobile 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()<<QObject::tr("更新 %1 条记录,耗时:%2 ms").arg(records).arg(time.elapsed());

    time.restart();
    query.exec("delete from mobile where id=88");
    qDebug()<<QObject::tr("删除一条数据,耗时:%1 ms").arg(time.elapsed());
    getchar();
    return a.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值