Считываю некоторую запись из БД (MySQL). Для конкретики возьмём поле, которое в БД содержит пустую строку (не NULL). В Qt-программе получил QVariant (querry.value(...)), содержащий значение этого поля.
Далее хотел проверить на NULL:
Этот QVariant при вызове isNull() возвращает true. И это для пустой строки, содержащейся в этом QVariant'е (проверил и qDebug'ом, и canConvert'ом - QVariant содержит имено строку и именно пустую).
Проверил, как при значении поля NULL, так и при пустой строке, соответствующий QVariant валиден и содержит пустую строку.
Тогда как мне определить, в соответствующей ячейке БД содержится NULL или пустая строка ?
Ну почему не читаем документацию?
QSqlRecord rec;
QString q = "select * from " + table;
QSqlQuery query(db);
bool st = isOpen();
if ( st )
{
st = query.exec( q );
rec = query.record();
}
Из QSqlRecord можно получить QSqlField для каждого поля.
А далее совсем просто:
QVariant::Type QSqlField::type () const
QVariant::Type это и есть тип поля допустим целое или строка.