我正在寻找一种方法来禁止对 QSqlQuery
对象进行非 SELECT 查询。
我知道 QSqlQuery::isSelect
只有在 QSqlQuery::exec
之后才有效(损坏
已经在这里完成了)。
那么,有没有办法做到这一点,或者我必须显式验证查询字符串
。
谢谢。
最佳答案
根据我的经验,即使在运行 QSqlQuery::exec
命令之前,QSqlQuery::isSelect
函数也能正常工作。但仅当使用查询初始化对象时。即:
QSqlQuery query("SELECT * FROM someTable");
qDebug() << query.isSelect(); //Outputs True
或
QString queryString = "SELECT * FROM someTable";
QSqlQuery query(queryString);
qDebug() << query.isSelect(); //Outputs True
如果您正在使用 prepare 函数并将查询字符串传递给它,那么您将必须自己验证查询字符串。即;
QSqlQuery query;
query.prepare("SELECT * FROM someTable");
qDebug() << query.isSelect(); //Outputs False
如果你真的想避免手动验证查询字符串,你将不得不避免使用 QSqlQuery::prepare
和 QSqlQuery::bindValue
函数,而是创建查询自己并使用您创建的 QString
初始化 QSqlQuery
对象。
关于c++ - QSqlQuery禁止非SELECT查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26022804/