从极客玩具到全球 Agent 基础设施,OpenClaw 三位腾讯云 Maintainer 的工程答卷
2026/6/10 8:08:16
.pro添加数据库模块:
pro
QT += sqlSQLite Qt 内置驱动,开箱即用。
cpp
运行
#include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError> // 1. 创建数据库连接 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("test.db"); // 数据库文件路径 if(!db.open()) { qDebug() << "打开失败:" << db.lastError().text(); return; } // 2. 建表 QSqlQuery query; query.exec("CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)"); // 3. 插入数据 query.exec("INSERT INTO user(name) VALUES('张三')"); // 4. 查询数据 query.exec("SELECT * FROM user"); while(query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug() << id << name; }cpp
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setPort(3306); db.setDatabaseName("dbname"); db.setUserName("root"); db.setPassword("123456"); if(!db.open()) { qDebug() << "MySQL 连接失败:" << db.lastError().text(); }cpp
运行
QSqlQuery query; query.prepare("INSERT INTO user(name) VALUES(:name)"); query.bindValue(":name", "李四"); query.exec();多条 SQL 要么全部执行成功,要么全部回滚。
cpp
运行
db.transaction(); // 开启事务 bool ok1 = query.exec("INSERT INTO user(name) VALUES('A')"); bool ok2 = query.exec("INSERT INTO user(name) VALUES('B')"); if(ok1 && ok2) db.commit(); // 提交 else db.rollback(); // 回滚本地单机、嵌入式优先 SQLite;服务端、多客户端选用 MySQL;复杂批量操作务必使用事务保证数据一致性。