如何检查QSqlQuery::addBindValue()
是否失败?例如,可能没有更多的占位符要绑定。请考虑以下代码:
QSqlQuery q;
q.prepare("INSERT INTO table1 (field1) VALUES (?)");
q.addBindValue("value1");
q.addBindValue("value2"); // this one should fail
但是,addBindValue()
是一个void
,因此它不会返回有关它是否成功或失败的信息。
我终于进入了源代码,似乎你真的无法发现它是否失败了。它不会设置最后一个错误或任何其他错误代码:
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;
}