马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Qt 中操纵 SQLite 数据库的步骤如下:
1. 添加 SQLite 驱动并打开数据库
- #include <QSqlDatabase>
- #include <QSqlError>
- #include <QSqlQuery>
- // 创建数据库连接
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName("mydatabase.db"); // 可以是绝对路径或相对路径
- if (!db.open()) {
- qDebug() << "Error opening database:" << db.lastError().text();
- return;
- }
复制代码 2. 执行 SQL 语句
创建表
- QSqlQuery query;
- if (!query.exec("CREATE TABLE IF NOT EXISTS users ("
- "id INTEGER PRIMARY KEY AUTOINCREMENT,"
- "name TEXT NOT NULL,"
- "age INTEGER)")) {
- qDebug() << "Create table error:" << query.lastError().text();
- }
复制代码 插入数据(两种方式)
- // 方式1:直接执行 SQL
- query.exec("INSERT INTO users (name, age) VALUES ('Alice', 25)");
- // 方式2:参数化查询(推荐)
- query.prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
- query.bindValue(":name", "Bob");
- query.bindValue(":age", 30);
- query.exec();
复制代码 批量插入(利用事务)
- db.transaction();
- QSqlQuery batchQuery;
- batchQuery.prepare("INSERT INTO users (name) VALUES (?)");
- for (const QString &name : {"Tom", "Jerry", "Mike"}) {
- batchQuery.addBindValue(name);
- batchQuery.exec();
- }
- db.commit();
复制代码 3. 查询数据
- QSqlQuery selectQuery("SELECT id, name, age FROM users");
- while (selectQuery.next()) {
- int id = selectQuery.value(0).toInt();
- QString name = selectQuery.value("name").toString();
- int age = selectQuery.value(2).toInt();
- qDebug() << id << name << age;
- }
复制代码 4. 利用模子视图(示例)
- #include <QSqlTableModel>
- #include <QTableView>
- // 创建模型
- QSqlTableModel *model = new QSqlTableModel;
- model->setTable("users");
- model->select();
- // 显示数据
- QTableView *view = new QTableView;
- view->setModel(model);
- view->show();
复制代码 5. 关闭数据库
注意事项:
- SQLite 驱动默认包罗在 Qt 中,不必要额外配置
- 数据库文件会被创建在程序的工作目录(除非指定绝对路径)
- 利用参数化查询可防止 SQL 注入
- 紧张操纵发起利用事务(BEGIN TRANSACTION/COMMIT)
- 错误查抄推荐利用 lastError() 方法
常见错误处理:
- if (query.lastError().isValid()) {
- qDebug() << "SQL Error:" << query.lastError().text();
- qDebug() << "Executed SQL:" << query.lastQuery();
- }
复制代码 完整示例代码可参考 Qt 官方文档:https://doc.qt.io/qt-5/sql-example.html
发起联合 Qt 的信号槽机制和 Model/View 架构实现数据库应用的高效开发。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |