2015-04-24 1 views
1

Есть ли возможность узнать, что QSqlQuery :: вызов bindValue в порядке?Как узнать, что QSqlQuery :: bindValue был корректным

Функции возвращают пустоту, и мне интересно, почему? По крайней мере, отсутствие требуемого владельца места должно быть сообщено (ihmo) как ошибка.

Возможно, есть еще одна возможность проверить, что привязка правильная?

+0

как вы имеете в виду вызова является правильным? значение привязки будет просто заменять владельца места на значение, которое вы привязываете к нему? вы можете использовать 'lastError(). text()', чтобы вернуть SQL-ошибку, если это то, что вы задали – AngryDuck

+1

, вы также можете использовать 'boundValue()' и передать ему местозаполнитель или позицию, это возвращает значение привязки, которое вы могли бы использовать то проверьте? – AngryDuck

+0

1-й комментарий: Интересно, почему bindValue не проверяет, есть ли место в запросе, которое было предоставлено ранее при подготовке. –

ответ

1

use bindValue() и передать имя заполнителя или позицию, и оно вернет значение, которое было привязано, чтобы вы могли проверить правильность привязки значений. В качестве альтернативы использует boundValues ​​(), который будет возвращать карту всех ключей и значений:

образцов из Qt Документов для boundValues()

QMapIterator<QString, QVariant> i(query.boundValues()); 
while (i.hasNext()) { 
    i.next(); 
    cout << i.key().toUtf8().data() << ": " 
     << i.value().toString().toUtf8().data() << endl; 
}  
Смежные вопросы