Qt 資料庫操作
阿新 • • 發佈:2020-08-12
SQL 是操作資料庫的標準語言,適用於MySQL、Oracle、DB2 等資料庫。Qt 的 QtSql 模組基於 SQL 提供了相關資料庫操作函式,因此得以使這些資料庫操作起來大同小異。
新增資料庫模組
- 在
.pro
檔案中新增QT += sql
- 在標頭檔案新增
#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();