Класс QSqlField
Класс QSqlField управляет полями в таблицах и представлениях баз данных SQL. Подробнее...
| Заголовок: | #include <QSqlField> |
| qmake: | QT += sql |
Открытые типы
| Перечисление | RequiredStatus { Required, Optional, Unknown } |
Открытые функции
| QSqlField(const QString &fieldName = QString(), QVariant::Type type = QVariant::Invalid) | |
| QSqlField(const QString &fieldName, QVariant::Type type, const QString &table) | |
| QSqlField(const QSqlField &other) | |
| ~QSqlField() | |
| void | clear() |
| QVariant | defaultValue() const |
| bool | isAutoValue() const |
| bool | isGenerated() const |
| bool | isNull() const |
| bool | isReadOnly() const |
| bool | isValid() const |
| int | length() const |
| QString | name() const |
| int | precision() const |
| QSqlField::RequiredStatus | requiredStatus() const |
| void | setAutoValue(bool autoVal) |
| void | setDefaultValue(const QVariant &value) |
| void | setGenerated(bool gen) |
| void | setLength(int fieldLength) |
| void | setName(const QString &name) |
| void | setPrecision(int precision) |
| void | setReadOnly(bool readOnly) |
| void | setRequired(bool required) |
| void | setRequiredStatus(QSqlField::RequiredStatus required) |
| void | setTableName(const QString &table) |
| void | setType(QVariant::Type type) |
| void | setValue(const QVariant &value) |
| QString | tableName() const |
| QVariant::Type | type() const |
| QVariant | value() const |
| bool | operator!=(const QSqlField &other) const |
| QSqlField & | operator=(const QSqlField &other) |
| bool | operator==(const QSqlField &other) const |
Подробное описание
Класс QSqlField управляет полями в таблицах и представлениях баз данных SQL.
QSqlField представляет характеристики одного столбца в таблице или представлении базы данных, такие как тип данных и имя столбца. Поле также содержит значение столбца базы данных, которое можно просмотреть или изменить.
Значения данных поля хранятся в качестве QVariants. Использование несовместимого типа запрещено. Например:
QSqlField field("age", QVariant::Int);
field.setValue(QPixmap()); // WRONG Однако поле попытается преобразовать определенные типы данных в тип данных поля, где это возможно:
QSqlField field("age", QVariant::Int);
field.setValue(QString("123")); // casts QString to int Объекты QSqlField редко создаются явно в коде приложения. Обычно к ним обращаются косвенно через QSqlRecord, которые уже содержат список полей. Например:
QSqlQuery query;
...
QSqlRecord record = query.record();
QSqlField field = record.field("country"); Объект QSqlField может предоставить некоторые метаданные о поле, например, его имя name(), тип QVariant type(), длину length(), точность precision(), значение по умолчанию defaultValue(), typeID() и его requiredStatus(), isGenerated() и isReadOnly(). Можно проверить, пусто ли поле isNull(), и получить его значение value(). При редактировании можно установить значение с помощью setValue() или установить NULL с помощью clear().
См. также QSqlRecord.
Документация по типам членов
Перечисление QSqlField::RequiredStatus
Указывает, является ли поле обязательным или необязательным.
| Константа | Значение | Описание |
|---|---|---|
QSqlField::Required |
1 |
Поле должно быть указано при вставке записей. |
QSqlField::Optional |
0 |
Поле необязательно при вставке записей. |
QSqlField::Unknown |
-1 |
Драйвер базы данных не смог определить, является ли поле обязательным или необязательным. |
См. также requiredStatus().
Документация по функциям-членам
QSqlField::QSqlField(const QString &fieldName = QString(), QVariant::Type type = QVariant::Invalid)
Создает пустое поле с именем fieldName и типом QVariant type.
См. также setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), setGenerated() и setReadOnly().
QSqlField::QSqlField(const QString &fieldName, QVariant::Type type, const QString &table)
Это перегруженная функция.
Создает пустое поле с именем fieldName и типом QVariant type в таблице table.
См. также setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), setGenerated() и setReadOnly().
QSqlField::QSqlField(const QSqlField &other)
Создает копию other.
QSqlField::~QSqlField()
Уничтожает объект и освобождает все выделенные ресурсы.
void QSqlField::clear()
Очищает значение поля и устанавливает его в NULL. Если поле является только для чтения, ничего не происходит.
См. такжеsetValue(), isReadOnly(), и requiredStatus().
QVariant QSqlField::defaultValue() const
Возвращает значение по умолчанию поля (которое может быть NULL).
См. такжеsetDefaultValue(), type(), requiredStatus(), length(), precision(), и isGenerated().
bool QSqlField::isAutoValue() const
Возвращает true, если значение автоматически генерируется базой данных, например, значения автоинкрементируемого первичного ключа.
Примечание: При использовании драйвера ODBC из-за ограничений API ODBC поле isAutoValue() заполняется только в поле QSqlField, полученном из QSqlRecord, полученного выполнением запроса SELECT. Оно false в поле QSqlField, полученном из QSqlRecord, возвращенном из QSqlDatabase::record() или QSqlDatabase::primaryIndex().
См. такжеsetAutoValue().
bool QSqlField::isGenerated() const
Возвращает true, если поле генерируется; в противном случае возвращает false.
См. такжеsetGenerated(), type(), requiredStatus(), length(), precision(), и defaultValue().
bool QSqlField::isNull() const
Возвращает true, если значение поля равно NULL; в противном случае возвращает false.
См. такжеvalue().
bool QSqlField::isReadOnly() const
Возвращает true, если значение поля только для чтения; в противном случае возвращает false.
См. такжеsetReadOnly(), type(), requiredStatus(), length(), precision(), defaultValue(), и isGenerated().
bool QSqlField::isValid() const
Возвращает true, если тип переменной поля корректен; в противном случае возвращает false.
int QSqlField::length() const
Возвращает длину поля.
Если возвращаемое значение отрицательно, это означает, что информация недоступна из базы данных.
См. такжеsetLength(), type(), requiredStatus(), precision(), defaultValue(), и isGenerated().
QString QSqlField::name() const
Возвращает имя поля.
См. такжеsetName().
int QSqlField::precision() const
Возвращает точность поля; это имеет смысл только для числовых типов.
Если возвращаемое значение отрицательно, это означает, что информация недоступна из базы данных.
См. такжеsetPrecision(), type(), requiredStatus(), length(), defaultValue(), и isGenerated().
QSqlField::RequiredStatus QSqlField::requiredStatus() const
Возвращает true если это обязательное поле; в противном случае возвращает false. Запрос INSERT завершится ошибкой, если у обязательного поля нет значения.
См. такжеsetRequiredStatus(), type(), length(), precision(), defaultValue(), и isGenerated().
void QSqlField::setAutoValue(bool autoVal)
Помечает поле как автоматически генерируемое значение, если autoVal равно true.
См. такжеisAutoValue().
void QSqlField::setDefaultValue(const QVariant &value)
Устанавливает значение по умолчанию для этого поля в value.
См. такжеdefaultValue(), value(), setType(), setRequiredStatus(), setLength(), setPrecision(), setGenerated(), и setReadOnly().
void QSqlField::setGenerated(bool gen)
Устанавливает состояние генерации. Если gen равно false, для этого поля не будет генерироваться SQL; в противном случае, такие классы Qt, как QSqlQueryModel и QSqlTableModel, сгенерируют SQL для этого поля.
См. такжеisGenerated(), setType(), setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), и setReadOnly().
void QSqlField::setLength(int fieldLength)
Устанавливает длину поля в fieldLength. Для строк это максимальное количество символов, которые может содержать строка; смысл для других типов варьируется.
См. такжеlength(), setType(), setRequiredStatus(), setPrecision(), setDefaultValue(), setGenerated(), и setReadOnly().
void QSqlField::setName(const QString &name)
Устанавливает имя поля в name.
См. такжеname().
void QSqlField::setPrecision(int precision)
Устанавливает точность поля precision. Это влияет только на числовые поля.
См. такжеprecision(), setType(), setRequiredStatus(), setLength(), setDefaultValue(), setGenerated(), и setReadOnly().
void QSqlField::setReadOnly(bool readOnly)
Устанавливает флаг только для чтения значения поля в readOnly. Для поля только для чтения нельзя установить значение с помощью setValue() и нельзя очистить до NULL с помощью clear().
См. такжеisReadOnly().
void QSqlField::setRequired(bool required)
Устанавливает состояние обязательности этого поля в Required, если required равно true; в противном случае устанавливает его в Optional.
См. такжеsetRequiredStatus() и requiredStatus().
void QSqlField::setRequiredStatus(QSqlField::RequiredStatus required)
Устанавливает состояние обязательности этого поля в required.
См. такжеrequiredStatus(), setType(), setLength(), setPrecision(), setDefaultValue(), setGenerated(), и setReadOnly().
void QSqlField::setTableName(const QString &table)
Устанавливает tableName поля в table.
См. такжеtableName().
void QSqlField::setType(QVariant::Type type)
Устанавливает тип переменной поля в type.
См. такжеtype(), setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), setGenerated(), и setReadOnly().
void QSqlField::setValue(const QVariant &value)
Устанавливает значение поля на value. Если поле является только для чтения (isReadOnly() возвращает true), ничего не происходит.
Если тип данных value отличается от текущего типа данных поля, выполняется попытка привести его к соответствующему типу. Это сохраняет тип данных поля в случае присваивания, например, QString к целочисленному типу данных.
Чтобы установить значение в NULL, используйте clear().
См. также value(), isReadOnly() и defaultValue().
QString QSqlField::tableName() const
Возвращает имя таблицы поля.
Примечание: При использовании драйвера QPSQL из-за ограничений библиотеки libpq поле tableName() не заполняется в QSqlField, полученном из QSqlRecord, полученного функцией QSqlQuery::record() для запроса с однократным проходом.
См. также setTableName().
QVariant::Type QSqlField::type() const
Возвращает тип поля, как он хранится в базе данных. Обратите внимание, что фактическое значение может иметь другой тип. Численные значения, слишком большие для хранения в long int или double, обычно хранятся как строки для предотвращения потери точности.
См. также setType().
QVariant QSqlField::value() const
Возвращает значение поля в виде QVariant.
Используйте isNull(), чтобы проверить, является ли значение поля NULL.
См. также setValue().
bool QSqlField::operator!=(const QSqlField &other) const
Возвращает true если поле не равно other; в противном случае возвращает false.
QSqlField &QSqlField::operator=(const QSqlField &other)
Устанавливает поле равным other.
bool QSqlField::operator==(const QSqlField &other) const
Возвращает true если поле равно other; в противном случае возвращает false.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qsqlfield.html