🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 概述 ## 初始化 初始化时可先传入 QSqlDatabase; ``` QSqlQuery query(db); ``` 初始化不存在 QsqlDatabase,则使用默认得数据库链接 ``` QSqlQuery query ``` ## 报错处理 使用 QSqlQuery.lastError 查看最后得错误 使用 QSqlQuery.lastQuery 查看最后得执行语句 ``` if(!query.exec("select * from hs_user")){ qDebug()<<"执行失败"<<query.lastError() <<query.lastQuery(); } ``` ## select 1. 通过索引获取值 ``` QSqlQuery query("SELECT country FROM artist"); while (query.next()) { QString country = query.value(0).toString(); doSomething(country); } ``` 2. 通过字段先获取索引 ``` QSqlQuery query("SELECT * FROM artist"); int fieldNo = query.record().indexOf("country"); while (query.next()) { QString country = query.value(fieldNo).toString(); doSomething(country); } ``` ## 使用预处理 prepare 1. 使用名称占位 ``` QSqlQuery query; query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (:id, :forename, :surname)"); query.bindValue(":id", 1001); query.bindValue(":forename", "Bart"); query.bindValue(":surname", "Simpson"); query.exec(); ``` 2. 使用索引占位 ``` QSqlQuery query; query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (:id, :forename, :surname)"); query.bindValue(0, 1001); query.bindValue(1, "Bart"); query.bindValue(2, "Simpson"); query.exec(); ``` ## 检查是否有数据 first ``` if(!query.first()){ qDebug()<<"not found"; } ```