Класс 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(), metaType(), 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(), metaType(), requiredStatus(), length(), precision(), и defaultValue().
bool QSqlField::isNull() const
Возвращает true если значение поля равно NULL; в противном случае возвращает false.
См. также value().
bool QSqlField::isReadOnly() const
Возвращает true если значение поля является только для чтения; в противном случае возвращает false.
См. также setReadOnly(), metaType(), requiredStatus(), length(), precision(), defaultValue(), и isGenerated().
bool QSqlField::isValid() const
Возвращает true если тип варианта поля действителен; в противном случае возвращает false.
int QSqlField::length() const
Возвращает длину поля.
Если возвращаемое значение отрицательное, это означает, что информация недоступна из базы данных.
См. также setLength(), metaType(), requiredStatus(), precision(), defaultValue(), и isGenerated().
QMetaType QSqlField::metaType() const
Возвращает тип поля, как хранится в базе данных. Обратите внимание, что фактическое значение может иметь другой тип. Численные значения, которые слишком велики для хранения в long int или double, обычно хранятся в виде строк для предотвращения потери точности.
См. также setMetaType().
QString QSqlField::name() const
Возвращает имя поля.
См. также setName().
int QSqlField::precision() const
Возвращает точность поля; это имеет смысл только для числовых типов.
Если возвращаемое значение отрицательное, это означает, что информация недоступна из базы данных.
См. также setPrecision(), metaType(), requiredStatus(), length(), defaultValue(), и isGenerated().
QSqlField::RequiredStatus QSqlField::requiredStatus() const
Возвращает true если это обязательное поле; в противном случае возвращает false. INSERT завершится неудачей, если для обязательного поля нет значения.
См. также setRequiredStatus(), metaType(), length(), precision(), defaultValue(), и isGenerated().
void QSqlField::setAutoValue(bool autoVal)
Помечает поле как автоматически сгенерированное значение, если autoVal равно true.
См. также isAutoValue().
void QSqlField::setDefaultValue(const QVariant &value)
Устанавливает значение по умолчанию для этого поля на value.
См. также defaultValue(), value(), setMetaType(), setRequiredStatus(), setLength(), setPrecision(), setGenerated(), и setReadOnly().
void QSqlField::setGenerated(bool gen)
Устанавливает состояние сгенерированного. Если gen равно false, SQL для этого поля не будет генерироваться; в противном случае Qt-классы, такие как QSqlQueryModel и QSqlTableModel, сгенерируют SQL для этого поля.
См. также isGenerated(), setMetaType(), setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), и setReadOnly().
void QSqlField::setLength(int fieldLength)
Устанавливает длину поля на fieldLength. Для строк это максимальное количество символов, которое может содержать строка; для других типов значение меняется.
См. также length(), setMetaType(), setRequiredStatus(), setPrecision(), setDefaultValue(), setGenerated(), и setReadOnly().
void QSqlField::setMetaType(QMetaType type)
Устанавливает тип варианта поля на type.
См. также metaType(), setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), setGenerated(), и setReadOnly().
void QSqlField::setName(const QString &name)
Устанавливает имя поля на name.
См. также name().
void QSqlField::setPrecision(int precision)
Устанавливает точность поля precision. Это влияет только на числовые поля.
См. также precision(), setMetaType(), 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(), setMetaType(), 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
Возвращает имя таблицы (tableName) поля.
Примечание: При использовании драйвера 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.2/qsqlfield.html