我正在寻找一种禁止对QSqlQuery
对象进行非SELECT查询的方法。
我知道QSqlQuery::isSelect
仅在QSqlQuery::exec
之后有效(损坏
已经在这里完成)。
因此,有什么方法可以执行此操作,或者我必须明确验证query string
。
谢谢。
最佳答案
根据我的经验,即使在运行QSqlQuery::isSelect
命令之前,QSqlQuery::exec
函数也可以正常工作。但仅当使用查询初始化对象时。即:
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
函数,而是自己创建查询并使用您创建的QSqlQuery
初始化QString
对象。