このページでは

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(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 は、データベーステーブルまたはビュー内の単一の列の特性(データ型や列名など)を表します。また、フィールドにはデータベース列の値も含まれており、この値は表示または変更することができます。

フィールドのデータ値は 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 オブジェクトは、フィールドに関するいくつかのメタデータを提供できます。例えば、name()、variantmetaType()、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 となります。

注: データベースに新しいレコードを書き込む際 、autoValue フィールドには、レコードがデータベースに送信された後にのみ、データベースによって生成された新しい値が格納されます。 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

このプロパティは、生成された状態を保持します。generated がfalse の場合、このフィールドに対してSQLは生成されません。それ以外の場合は、QSqlQueryModel やQSqlTableModel といった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 ライブラリの制限により、フォワードオンリークエリのQSqlQuery::record() によって取得されたQSqlRecord から生成されるQSqlField では、tableName() フィールドに値が設定されません。

この列挙型は Qt 6.8 で導入されました。

アクセス関数:

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

[since 6.8] value : QVariant

このプロパティは、value をQVariant

value を読み取り専用のQSqlField に設定しても、何の効果もありません。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())

table 内で、type 型の「fieldName 」という名前の空のフィールドを構築します。

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

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

QSqlField::QSqlField(const QSqlField &other)

other のコピーを作成します。

[noexcept default] QSqlField::QSqlField(QSqlField &&other)

QSqlField のインスタンスをMoveコンストラクタで生成します。

[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)

autoValue をautoVal に設定します。

注: プロパティ `autoValue`のセッター 関数です。

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

void QSqlField::setDefaultValue(const QVariant &value)

defaultValue をvalue に設定します。

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

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

void QSqlField::setGenerated(bool gen)

generated をgen に設定します。

注: プロパティ `generated`のセッター 関数です。

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

void QSqlField::setLength(int fieldLength)

length をfieldLength に設定します。

注: プロパティ `length`のセッター 関数です。

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

void QSqlField::setMetaType(QMetaType type)

metaType をtype に設定します。

注: プロパティ `metaType`のセッター 関数です。

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

void QSqlField::setName(const QString &name)

name をname に設定します。

注: プロパティ `name`のセッター 関数です。

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

void QSqlField::setPrecision(int precision)

precision をprecision に設定します。

注: プロパティ `precision`のセッター 関数です。

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

void QSqlField::setReadOnly(bool readOnly)

readOnly をreadOnly に設定します。

注: プロパティ `readOnly`のセッター 関数です。

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

void QSqlField::setRequired(bool required)

required が true の場合は、このフィールドの必須ステータスをRequired に設定します。それ以外の場合は、Optional に設定します。

「requiredStatus」も参照してください 。

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

requiredStatus をrequired に設定します。

注: プロパティ `requiredStatus`のセッター 関数です。

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

void QSqlField::setTableName(const QString &tableName)

tableName をtableName に設定します。

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

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

void QSqlField::setValue(const QVariant &value)

value をvalue に設定します。

注: プロパティ `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 の値を返します。

注: プロパティ `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` を返します。

© 2026 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.