我正在寻找一种禁止对QSqlQuery
对象进行非选择查询的方法。
我知道QSqlQuery::isSelect
只有在QSqlQuery::exec
(这里已经造成的损坏)之后才有效。
那么,有没有办法这样做,或者我必须显式地验证query string
。
谢谢。
发布于 2014-09-25 02:43:34
根据我的经验,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
如果使用准备函数并将查询字符串传递给它,则必须亲自验证查询字符串。即;
QSqlQuery query;
query.prepare("SELECT * FROM someTable");
qDebug() << query.isSelect(); //Outputs False
如果您确实希望避免对查询字符串进行手动验证,则必须避免使用QSqlQuery::prepare
和QSqlQuery::bindValue
函数,而是自己创建查询,并使用所创建的QString
初始化QSqlQuery
对象。
https://stackoverflow.com/questions/26022804
复制相似问题