我正在寻找一种禁止QSqlQuery
对象的非SELECT查询的方法。
我知道QSqlQuery::isSelect
仅在QSqlQuery::exec
之后生效(损坏
已经在这里完成了。)
那么,有没有办法做到这一点,或者我必须明确验证query string
。
感谢。
答案 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::prepare
和QSqlQuery::bindValue
函数,而是自己创建查询并初始化QSqlQuery
对象你创建的QString
。