• Qt 数据库操作


    SQL 是操作数据库的标准语言,适用于MySQL、Oracle、DB2 等数据库。Qt 的 QtSql 模块基于 SQL 提供了相关数据库操作函数,因此得以使这些数据库操作起来大同小异。下面的以SQLite数据库为例记录,生成的数据库可通过SQLiteStudio进行可视化操作。

    添加模块

    1. .pro文件中添加QT += sql
    2. 在头文件添加
    #include <QSqlQuery>
    #include <QSqlError>
    

    添加数据库

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("MyData.db3");
    

    打开数据库

    if (!db.open()) 
    {
        qDebug()<< "ERROR:"<<db.lastError().text();
        return false;
    }
    

    创建表

    这里创建一张含义整型、字符串、二进制数据3种存储类型字段的表

    QSqlQuery query;
    query.exec("CREATE TABLE students ("
                        "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                        "name VARCHAR NOT NULL, "
                        "score INTEGER NOT NULL, "
                        "photo BLOB NOT NULL)");
    

    增加记录

    query.prepare("INSERT INTO students (name, score, photo) "
                    "VALUES (:name, :score, :photo)");
    
    query.bindValue(":name", "wangwu");
    query.bindValue(":score", 99);
    query.bindValue(":photo", QByteArray("BinData", 8));
    query.exec();
    

    删除记录

    query.exec("DELETE FROM students WHERE id = 1");
    

    修改记录

    query.prepare("UPDATE students SET photo = :photo WHERE name = 'wangwu'");
    query.bindValue(":photo", QByteArray("NewBinData", 11));
    query.exec();
    

    查找记录

    query.exec("SELECT * FROM students WHERE name = 'wangwu'");
    while (query.next())
    {
        int id            =  query.value(0).toInt();
        QString name      =  query.value(1).toString();
        QByteArray photo  =  query.value(3).toByteArray();
    }
    

    关闭数据库

    db.close();
    
  • 相关阅读:
    2个准则,解决人际、团队和客户问题
    系统思维
    如何看透他人行为背后的本质 | 思维模型02:行为分析模型
    提问比回答更有力量
    有了套路,为什么还是解决不了问题
    能够跨界成功的人
    正确的思考
    你的烦恼,全因为不会思考
    努力,到底是不是天赋
    我们是魔术师面前的观众吗
  • 原文地址:https://www.cnblogs.com/llil/p/13492710.html
Copyright © 2020-2023  润新知