Класс QSqlField
Класс QSqlField манипулирует полями в таблицах и представлениях баз данных SQL. Подробнее...
| Заголовок: | #include <QSqlField> |
| CMake: | find_package(Qt6 COMPONENTS Sql REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Sql) |
| qmake: | QT += sql |
Типы публичного доступа
| Перечисление | RequiredStatus { Required, Optional, Unknown } |
Функции публичного доступа
| QSqlField(const QSqlField &other) | |
| QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString()) | |
| QSqlField & | operator=(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 |
| QMetaType | metaType() 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 | setMetaType(QMetaType type) |
| 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 | setValue(const QVariant &value) |
| QString | tableName() const |
| QVariant | value() const |
| bool | operator!=(const QSqlField &other) const |
| bool | operator==(const QSqlField &other) const |
Подробное описание
QSqlField представляет характеристики одного столбца в таблице или представлении базы данных, такие как тип данных и имя столбца. Поле также содержит значение столбца базы данных, которое можно просмотреть или изменить.
Значения данных поля хранятся в виде QVariant. Использование несовместимого типа запрещено. Например:
QSqlField field("age", QMetaType::fromType<int>());
field.setValue(QPixmap()); // WRONG Однако поле попытается привести некоторые типы данных к типу данных поля, если это возможно:
QSqlField field("age", QMetaType::fromType<int>());
field.setValue(QString("123")); // casts QString to int Объекты QSqlField редко создаются явно в коде приложения. К ним обычно обращаются косвенно через QSqlRecord, которые уже содержат список полей. Например:
QSqlQuery query;
...
QSqlRecord record = query.record();
QSqlField field = record.field("country"); Объект QSqlField может предоставить некоторые метаданные о поле, например, его имя(), тип варианта, длину(), точность(), значение по умолчанию(), typeID() и его статус обязательности(), сгенерировано() и только для чтения(). Можно проверить данные поля, чтобы узнать, является ли оно пустым(), и получить его значение(). При редактировании данные можно установить с помощью setValue() или установить в NULL с помощью clear().
См. также QSqlRecord.
Документация по типам членов
Перечисление QSqlField::RequiredStatus
Указывает, является ли поле обязательным или необязательным.
| Константа | Значение | Описание |
|---|---|---|
QSqlField::Required |
1 |
Поле должно быть указано при вставке записей. |
QSqlField::Optional |
0 |
Поле не обязательно при вставке записей. |
QSqlField::Unknown |
-1 |
Драйвер базы данных не смог определить, является ли поле обязательным или необязательным. |
См. также requiredStatus().
Документация по функциям-членам
QSqlField::QSqlField(const QSqlField &other)
Создает копию other.
[since 6.0] QSqlField::QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())
Это перегруженная функция.
Создает пустое поле с именем fieldName типа type в table.
Эта функция была введена в Qt 6.0.
См. также setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), setGenerated() и setReadOnly().
QSqlField &QSqlField::operator=(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().
QMetaType QSqlField::metaType() const
Возвращает тип поля, как он хранится в базе данных. Обратите внимание, что фактическое значение может иметь другой тип. Числовые значения, которые слишком велики для хранения в long int или double, обычно хранятся в виде строк, чтобы избежать потери точности.
См. также setMetaType() и setType().
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::setMetaType(QMetaType type)
Устанавливает тип варианта поля на type.
См. также metaType(), type(), setRequiredStatus(), setLength(), 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().
END_OF_DOCUMENT_MARKERvoid 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 QSqlField::value() const
Возвращает значение поля как QVariant.
Используйте isNull(), чтобы проверить, является ли значение поля NULL.
См. также setValue().
bool QSqlField::operator!=(const QSqlField &other) const
Возвращает true если поле не равно other; в противном случае возвращает false.
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-6.0/qsqlfield.html