QSqlQuery禁止非SELECT查询

时间:2014-09-24 17:18:11

标签: c++ sql qt

我正在寻找一种禁止QSqlQuery对象的非SELECT查询的方法。

我知道QSqlQuery::isSelect仅在QSqlQuery::exec之后生效(损坏 已经在这里完成了。)

那么,有没有办法做到这一点,或者我必须明确验证query string

感谢。

1 个答案:

答案 0 :(得分:1)

根据我的经验,QSqlQuery::isSelect函数甚至在运行QSqlQuery::exec命令之前也能正常工作。但只有在使用查询初始化对象时。即:

QSqlQuery query("SELECT * FROM someTable");
qDebug() << query.isSelect(); //Outputs True

OR

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::prepareQSqlQuery::bindValue函数,而是自己创建查询并初始化QSqlQuery对象你创建的QString