Класс QSqlField
Класс QSqlField управляет полями в таблицах и представлениях баз данных SQL. Подробнее...
| Заголовок: | #include <QSqlField> |
| qmake: | QT += sql |
Общедоступные типы
| Перечисление | RequiredStatus { Required, Optional, Unknown } |
Общедоступные функции
| QSqlField(const QSqlField &other) | |
| QSqlField(const QString &fieldName, QVariant::Type type, const QString &table) | |
| QSqlField(const QString &fieldName = QString(), QVariant::Type type = {}) | |
| 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 |
| 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 |
| bool | operator==(const QSqlField &other) const |
Подробное описание
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 может предоставить некоторые метаданные о поле, например, его имя(), тип QVariant(), длина(), точность(), значение по умолчанию(), typeID(), и его requiredStatus(), isGenerated() и isReadOnly(). Данные поля можно проверить, чтобы увидеть, isNull() ли оно, и получить его значение(). При редактировании данные можно установить с помощью setValue() или установить значение NULL с помощью clear().
См. также QSqlRecord.
Документация по типу члена
Перечисление QSqlField::RequiredStatus
Указывает, является ли поле обязательным или необязательным.
| Константа | Значение | Описание |
|---|---|---|
QSqlField::Required |
1 |
Поле должно быть указано при вставке записей. |
QSqlField::Optional |
0 |
Поле не обязательно при вставке записей. |
QSqlField::Unknown |
-1 |
Драйвер базы данных не смог определить, является ли поле обязательным или необязательным. |
См. также requiredStatus().
Документация по функциям члена
QSqlField::QSqlField(const QSqlField &other)
Создает копию other.
QSqlField::QSqlField(const QString &fieldName, QVariant::Type type, const QString &table)
Это перегруженная функция.
Создает пустое поле с именем fieldName типа type в таблице table.
См. также setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), setGenerated() и setReadOnly().
QSqlField::QSqlField(const QString &fieldName = QString(), QVariant::Type type = {})
Создает пустое поле с именем fieldName типа type.
См. также 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().
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().
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::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.
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.15/qsqlfield.html