1. 程式人生 > 實用技巧 >Qt 資料庫操作

Qt 資料庫操作

SQL 是操作資料庫的標準語言,適用於MySQL、Oracle、DB2 等資料庫。Qt 的 QtSql 模組基於 SQL 提供了相關資料庫操作函式,因此得以使這些資料庫操作起來大同小異。

新增資料庫模組

  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();