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();
posted @ 2020-08-12 20:11  派大海星  阅读(205)  评论(0编辑  收藏  举报