检查QSqlQuery :: addBindValue()是否失败

时间:2015-06-15 09:52:40

标签: c++ qt qsqlquery

如何检查QSqlQuery::addBindValue()是否失败?例如,可能没有任何剩余的占位符可供绑定。请考虑以下代码:

QSqlQuery q;
q.prepare("INSERT INTO table1 (field1) VALUES (?)");
q.addBindValue("value1");
q.addBindValue("value2"); // this one should fail

但是,addBindValue()void,因此它不会返回有关成功还是失败的信息。

1 个答案:

答案 0 :(得分:0)

我终于进入了消息来源,似乎你真的无法找出它是否失败了。它不会设置上一个错误或任何其他错误代码:

void QSqlResult::bindValue(int index, const QVariant& val, QSql::ParamType paramType)
{
    Q_D(QSqlResult);
    d->binds = PositionalBinding;
    QList<int>& indexes = d->indexes[d->fieldSerial(index)];
    if (!indexes.contains(index))
        indexes.append(index);
    if (d->values.count() <= index)
        d->values.resize(index + 1);
    d->values[index] = val;
    if (paramType != QSql::In || !d->types.isEmpty())
        d->types[index] = paramType;
}