Название: Как "опознать" пустую строку и NULL при считывании из MySQL Отправлено: Cyrax от Январь 14, 2008, 20:24 Считываю некоторую запись из БД (MySQL). Для конкретики возьмём поле, которое в БД содержит пустую строку (не NULL). В Qt-программе получил QVariant (querry.value(...)), содержащий значение этого поля.
Далее хотел проверить на NULL: Этот QVariant при вызове isNull() возвращает true. И это для пустой строки, содержащейся в этом QVariant'е (проверил и qDebug'ом, и canConvert'ом - QVariant содержит имено строку и именно пустую). Проверил, как при значении поля NULL, так и при пустой строке, соответствующий QVariant валиден и содержит пустую строку. Тогда как мне определить, в соответствующей ячейке БД содержится NULL или пустая строка ? Название: Re: Как "опознать" пустую строку и NULL при считывании из MySQL Отправлено: Mikhail от Январь 14, 2008, 21:48 Считываю некоторую запись из БД (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 это и есть тип поля допустим целое или строка. Название: Re: Как "опознать" пустую строку и NULL при считывании из MySQL Отправлено: Cyrax от Январь 14, 2008, 22:19 Цитировать QVariant::Type QSqlField::type () const Вот этот тип у меня - QString, поскольку в БД поле имеет тип string + допускает null-поля.QVariant::Type это и есть тип поля допустим целое или строка. Мне не тип данных нужно определить, а факт null'а в ячейке БД... Название: Re: Как "опознать" пустую строку и NULL при считывании из MySQL Отправлено: Mikhail от Январь 14, 2008, 22:27 Какая для тебя принципиальная разница?
Название: Re: Как "опознать" пустую строку и NULL при считывании из MySQL Отправлено: Cyrax от Январь 14, 2008, 23:05 Цитировать Какая для тебя принципиальная разница? Мне как раз принципиально важно отличать пустые строки от NULL'ов, поскольку первое означает наличие данных, второе - их отсутствие.Сейчас у меня прога неправильно из-за этого работает... Название: Re: Как "опознать" пустую строку и NULL при считывании из MySQL Отправлено: ритт от Январь 14, 2008, 23:44 Цитировать bool QSqlQuery::isNull ( int field ) const Returns true if the query is active and positioned on a valid record and the field is NULL; otherwise returns false. Note that for some drivers, isNull() will not return accurate information until after an attempt is made to retrieve data. Название: Re: Как "опознать" пустую строку и NULL при считывании из MySQL Отправлено: Cyrax от Январь 14, 2008, 23:53 Спасибо, затестирую...
|