QSqlField Class

QSqlField クラスは、SQL データベース・テーブルおよびビューのフィールドを操作します。詳細...

ヘッダ #include <QSqlField>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql

パブリック型

enum RequiredStatus { Required, Optional, Unknown }

プロパティ

パブリック機能

(since 6.0) QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())
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
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 &tableName)
void setValue(const QVariant &value)
(since 6.6) void swap(QSqlField &other)
QString tableName() const
QVariant value() const
bool operator!=(const QSqlField &other) const
QSqlField &operator=(const QSqlField &other)
bool operator==(const QSqlField &other) const

詳細説明

QSqlField は、データ型やカラム名など、データベーステーブルまたはビュー内の単一のカラムの特性を表します。フィールドにはデータベースカラムの値も含まれ、表示または変更することができます。

フィールド・データの値は QVariants として格納されます。互換性のないデータ型の使用は許可されません。例えば

    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 オブジェクトはフィールドに関するメタデータを提供することができます。たとえば、name()、variant type()、length()、precision()、defaultValue()、typeID()、requiredStatus()、isGenerated()、isReadOnly()などです。フィールドのデータは、isNull() かどうかをチェックし、value() を取得することができます。編集時には、setValue() でデータを設定するか、clear() で NULL を設定します。

QSqlRecordも参照

メンバ型ドキュメント

enum QSqlField::RequiredStatus

フィールドが必須か任意かを指定します。

定数説明
QSqlField::Required1フィールドはレコード挿入時に指定する必要があります。
QSqlField::Optional0レコードの挿入時にフィールドを指定する必要はありません。
QSqlField::Unknown-1データベース・ドライバはフィールドが必須かオプションかを判断できませんでした。

requiredStatusも参照してください

プロパティのドキュメント

[since 6.8] autoValue : bool

値がデータベースによって自動生成される場合、例えば自動インクリメントの主キー値の場合、この値はtrue になります。

注: ODBC ドライバを使用する場合、ODBC API の制限により、isAutoValue() フィールドは、SELECT クエリを実行して取得したQSqlRecord の結果のQSqlField にのみ入力されます。QSqlDatabase::record() またはQSqlDatabase::primaryIndex() から返されたQSqlRecord の結果のQSqlField では、false です。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

bool isAutoValue() const
void setAutoValue(bool autoVal)

[since 6.8] defaultValue : QVariant

このプロパティは、このフィールドのデフォルト値を保持します。一部のデータベース・ドライバのみがこのプロパティをサポートしています。現在のところ、SQLite、PostgreSQL、Oracle、MySQL/MariaDB です。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

QVariant defaultValue() const
void setDefaultValue(const QVariant &value)

[since 6.8] generated : bool

このプロパティは、生成された状態を保持します。generatedfalse の場合、このフィールドに対して SQL は生成されません。それ以外の場合、QSqlQueryModelQSqlTableModel などの Qt クラスがこのフィールドに対して SQL を生成します。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

bool isGenerated() const
void setGenerated(bool gen)

[since 6.8] length : int

このプロパティはフィールドの長さを保持する。

値が負の場合、その情報はデータベースから利用できないことを意味します。文字列の場合、これは文字列が保持できる最大文字数です。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

int length() const
void setLength(int fieldLength)

[since 6.8] metaType : QMetaType

このプロパティは、データベースに格納されているフィールドの型を保持します。long int や double に格納するには大きすぎる数値は、精度の低下を防ぐため、通常は文字列として格納されます。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

QMetaType metaType() const
void setMetaType(QMetaType type)

QSqlDatabase::numericalPrecisionPolicyも参照して ください。

name : QString

このプロパティはフィールド名を保持する。これはカラム名またはユーザが指定したエイリアスになります。

アクセス関数:

QString name() const
void setName(const QString &name)

[since 6.8] precision : int

このプロパティはフィールドの精度を保持する。

返される値が負の場合、その情報はデータベースから利用できないことを意味します。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

int precision() const
void setPrecision(int precision)

[since 6.8] readOnly : bool

このプロパティがtrue の場合、このQSqlField を変更することはできない。読み取り専用フィールドは、setValue() で値を設定したり、clear() で NULL にクリアすることはできません。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

bool isReadOnly() const
void setReadOnly(bool readOnly)

[since 6.8] requiredStatus : RequiredStatus

このプロパティはフィールドのRequiredStatus 。必須フィールドに値がない場合、INSERT は失敗します。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

QSqlField::RequiredStatus requiredStatus() const
void setRequiredStatus(QSqlField::RequiredStatus required)

RequiredStatusも参照してください

[since 6.8] tableName : QString

このプロパティはフィールドの tableName を保持します。

注意: QPSQL ドライバを使用する場合、libpq ライブラリの制限により、tableName() フィールドは、フォワードのみのクエリのQSqlQuery::record() によって取得されたQSqlRecord の結果のQSqlField には入力されません。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

QString tableName() const
void setTableName(const QString &tableName)

[since 6.8] value : QVariant

このプロパティは、value を保持する。QVariant

value を読み取り専用のQSqlField に設定することは、no-op である。value のデータ型がフィールドの現在のデータ型と異なる場合、適切な型へのキャストが試みられる。これにより、QString を整数データ型に代入する場合など、フィールドのデータ型が保持される。

値を NULL に設定するには、clear() を使用します。

このプロパティは Qt 6.8 で導入されました。

アクセス関数:

QVariant value() const
void setValue(const QVariant &value)

メンバ関数のドキュメント

[explicit, since 6.0] QSqlField::QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())

これはオーバーロードされた関数である。

tabletype 型のfieldName という空のフィールドを構築します。

この関数は Qt 6.0 で導入されました。

QSqlField::QSqlField(const QSqlField &other)

other のコピーを作成する。

[noexcept] QSqlField::~QSqlField()

オブジェクトを破棄し、割り当てられたリソースを解放する。

void QSqlField::clear()

フィールドの値をクリアし、NULLに設定する。フィールドが読み取り専用の場合は何も起こらない。

QVariant QSqlField::defaultValue() const

defaultValueの値を設定します。

注: defaultValue プロパティのゲッター関数です。

setDefaultValue()も参照してください

bool QSqlField::isAutoValue() const

autoValue の値を返す。

注: プロパティのゲッター関数autoValue

bool QSqlField::isGenerated() const

generated の値を返す。

注: プロパティのゲッター関数generated

bool QSqlField::isNull() const

フィールドの値が NULL の場合はtrue を返し、そうでない場合は false を返します。

valueも参照

bool QSqlField::isReadOnly() const

readOnly の値を返す。

注: プロパティのゲッター関数readOnly

bool QSqlField::isValid() const

フィールドのバリアントタイプが有効な場合はtrue を返し、そうでない場合はfalse を返す。

int QSqlField::length() const

length の値を返す。

備考: プロパティ length のゲッター関数。

setLength()も参照してください

QMetaType QSqlField::metaType() const

metaType の値を返す。

メモ: プロパティ metaType のゲッター関数。

setMetaType()も参照

QString QSqlField::name() const

name の値を返す。

備考: プロパティ name のゲッター関数。

setName()も参照してください

int QSqlField::precision() const

precision の値を返す。

注: プロパティ precision のゲッター関数。

setPrecision()も参照

QSqlField::RequiredStatus QSqlField::requiredStatus() const

requiredStatus の値を返す。

注: requiredStatus プロパティのゲッター関数。

setRequiredStatus()も参照してください

void QSqlField::setAutoValue(bool autoVal)

autoValueautoVal に設定する。

注: プロパティautoValue に対するセッター関数。

isAutoValue()も参照してください

void QSqlField::setDefaultValue(const QVariant &value)

defaultValuevalue に設定する。

注: プロパティdefaultValue に対するセッター関数。

defaultValue()も参照してください

void QSqlField::setGenerated(bool gen)

generatedgen に設定する。

注: プロパティgenerated に対するセッター関数。

isGenerated()も参照してください

void QSqlField::setLength(int fieldLength)

lengthfieldLength に設定する。

注: プロパティlength に対するセッター関数。

length()も参照してください

void QSqlField::setMetaType(QMetaType type)

metaTypetype に設定する。

注: プロパティmetaType に対するセッター関数。

metaType()も参照してください

void QSqlField::setName(const QString &name)

namename に設定する。

注: プロパティname に対するセッター関数。

name()も参照してください

void QSqlField::setPrecision(int precision)

precisionprecision に設定する。

注: プロパティprecision に対するセッター関数。

precision()も参照してください

void QSqlField::setReadOnly(bool readOnly)

readOnlyreadOnly に設定する。

注: プロパティreadOnly に対するセッター関数。

isReadOnly()も参照してください

void QSqlField::setRequired(bool required)

このフィールドの必須ステータスを、required が true の場合はRequired に設定し、そうでない場合はOptional に設定する。

requiredStatusも参照

void QSqlField::setRequiredStatus(QSqlField::RequiredStatus required)

requiredStatusrequired に設定する。

注: プロパティrequiredStatus に対するセッター関数。

requiredStatus()も参照してください

void QSqlField::setTableName(const QString &tableName)

tableNametableName に設定する。

注: プロパティtableName に対するセッター関数。

tableName()も参照してください

void QSqlField::setValue(const QVariant &value)

valuevalue に設定する。

注: プロパティvalue に対するセッター関数。

value()も参照してください

[noexcept, since 6.6] void QSqlField::swap(QSqlField &other)

このフィールドをother と入れ替える。この操作は非常に高速で、失敗することはありません。

この関数は Qt 6.6 で導入されました。

QString QSqlField::tableName() const

tableName を返します。

注: プロパティ tableName のゲッター関数です。

setTableName()も参照してください

QVariant QSqlField::value() const

valueの値を返す。

備考: プロパティ値のゲッター関数。

setValue()も参照してください

bool QSqlField::operator!=(const QSqlField &other) const

フィールドがother と等しくない場合はtrue を返し、そうでない場合は false を返す。

QSqlField &QSqlField::operator=(const QSqlField &other)

フィールドをother に等しくする。

bool QSqlField::operator==(const QSqlField &other) const

フィールドがother と等しければtrue を返し、そうでなければ false を返す。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.