[QT] SQLite操作

前端之家收集整理的这篇文章主要介绍了[QT] SQLite操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在工程配置文件中加入sql:

QT += core sql

先随意贴一段代码

#include <QCoreApplication>
#include <Qtsql/Qtsql>
#include <error.h>
#include <QDateTime>
int main(int argc,char *argv[])
{
    // 设置加载库目录,设置为从当前目录plugins下加载
    // 为什么要加载?因为sql属于plugins,程序在加载plugins时
    // 会自动到安装路径下查找,但是如果到别人电脑上,就没有你安装qt的源码库了
    // 所以我们可以将qt源码库下的plugins目录复制到可执行程序同目录下
    // 然后通过添加LibraryPath来让程序在当前目录下查找
    QCoreApplication::addLibraryPath("./plugins");

    // 设置数据库驱动类型
    // QT支持:QPsql,QMysqL,QOCI,QODBC,QDB2,QTDS,QsqlITE,QIBASE
    QsqlDatabase db = QsqlDatabase::addDatabase("QsqlITE");
    // 设置数据库名,他会从当前目录进行加载
    db.setDatabaseName("BMJZ.db");
    // 打开数据库
    if (!db.open()){
        perror("db open fail:");
        return -1;
    }
    // 为什么选择在QCoreApplication/QApplication上面加载数据库
    // 因为在整个程序中,我们只用加载一次数据库即可。
    // 后面对数据库的操作,只需借助QsqlQuery进行。
    QCoreApplication a(argc,argv);

    // 所有数据库的操作可以借助QsqlQuery进行操作
    QsqlQuery query;
    // 一般命令的执行方式
    bool ok = query.exec("INSERT INTO tb_log (ID,DIRECTORY,CREATE_DATE)"
                         "VALUES (4,'Hello World','2222/2/22 22:22:22');");
    if(!ok){
        perror("insert tb_log fail:");
    }
    // 这种数据库插入的方法比较实用
    for (int i = 0; i< 3; ++i)
    {
        query.prepare("INSERT INTO tb_log (ID,CREATE_DATE) VALUES (:ID,:DIRECTORY,:CREATE_DATE)");
        query.bindValue(":ID",QString::number(i+2));
        query.bindValue(":DIRECTORY",QString("smith_%1").arg(i+1));
        query.bindValue(":CREATE_DATE",QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
        query.exec();
    }
    // 这种数据查找结果也是比较实用
    query.exec("SELECT ID,CREATE_DATE FROM tb_log");
    while (query.next()){
        printf("%d\t%s\t%s\n",query.value(0).toInt(),query.value(1).toString().toStdString().c_str(),query.value(2).toString().toStdString().c_str());
    }
    // 获取程序退出
    int ret = a.exec();

    //释放数据库
    db.close();
    db.removeDatabase("BMJZ.db");
    return ret;
}

关于qt数据库使用技巧,如果是整个程序有多个类来操作数据库。那么我们可以在qt的main函数里面进行数据库初始化和退出
而需要对数据进行操作的,则直接在类中调用QsqlQuery对数据表进行操作。
关于sqlite的操作,可以参看http://www.runoob.com/sqlite/sqlite-c-cpp.html 这里有对sqlite的相信命令。

猜你在找的Sqlite相关文章