Qt使用Sqlite

18 篇文章 2 订阅

在Qt的sql中自带了sqlite3以及之前版本的sqlite,默认是sqlite3了。

首先随意建一个Qt程序,在.pro文件中加入sql模块:

执行qmake

接下来就可以使用sqlite了,看代码示例:

#include <QDebug>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlQuery>
#include <QDateTime>
#include <QSqlError>
#include <QSqlRecord>
#include <QSqlResult>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QString error_tip  = "%1:[%2]%3";
    QString create_sql = "CREATE TABLE IF NOT EXISTS data_list(id INT PRIMARY KEY, name VARCHAR(255), date VARCHAR(255));";
    QString insert_sql = "INSERT INTO data_list(id, name, date) VALUES(%1,'%2','%3');";
    QString select_sql = "SELECT * FROM data_list;";

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("./data_station.db");
    if(!db.open())
    {
        qDebug() << error_tip.arg("open data base 'data_station' failed").arg(db.lastError().type()).arg(db.lastError().text());
        return 0;
    }

    QSqlQuery db_operator(db);

    //* 如果不存在表格则创建
    if(!db_operator.exec(create_sql))
    {
        qDebug() << error_tip.arg("create table 'data_list' failed").arg(db_operator.lastError().type()).arg(db_operator.lastError().text());
    }

    //* 插入100条示例数据
    for(int i = 0; i < 100; i++)
    {
        if(!db_operator.exec(insert_sql.arg(i).arg(QString("data %1").arg(i)).arg(QDateTime::currentDateTime().toString())))
        {
            qDebug() << error_tip.arg("insert failed").arg(db_operator.lastError().type()).arg(db_operator.lastError().text());
        }
    }

    db.commit();

    //* 查询所有数据
    if(!db_operator.exec(select_sql))
    {
        qDebug() << error_tip.arg("select failed").arg(db_operator.lastError().type()).arg(db_operator.lastError().text());
    }
    else
    {
        qDebug() << select_sql;
        int count = 0;
        while(db_operator.next())
        {
            count ++;
            QString res = "%1 '%2' %3";
            qDebug() << res.arg(db_operator.value(0).toString()).arg(db_operator.value(1).toString()).arg(db_operator.value(2).toString());
        }

        qDebug() << QString("[count:%1]").arg(count);
    }

    //return 0;
    return a.exec();
}

第一次运行的时候会在运行目录自动创建数据库文件:data_station.db 并创建表格data_list并尝试插入100行数据。

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值