1. 概述
UXDB QT 驱动使基于 QT 框架的应用程序能够通过 QT SQL 模块访问优炫数据库管理系统(UXDB)。QT 驱动对外提供 QT SQL 模块的 11 个公开类,应用可通过这些标准类完成数据库连接、SQL 执行、结果集处理、数据模型绑定等操作。
QT 驱动主要特性:
- 驱动注册名:
QUXSQL(QT 5.x)/ QUXSQL7(QT 7 及新版本),基于 QT 5.6.3 头文件
- 完全遵循 QT SQL 模块标准接口,应用无需修改即可平滑迁移
- 支持连接、事务、预处理语句、批量执行、外键关联模型等完整能力
- 默认端口:
52025
- 支持通过连接选项(
setConnectOptions)传递 sslmode 等连接参数
2. 安装与配置
2.1 安装 QT 开发环境
QT 驱动安装包由 UXDB 数据库提供,从 UXDB 数据库产品中获取并安装,版本要求 QT 5.6.3 及以上。
2.2 编译 UXDB QT 驱动插件
使用 qmake 配置 UXDB QT 驱动源码,指定 UXDB 头文件与客户端库路径后编译,生成驱动插件(如 qsqluxsql)。
2.3 部署驱动插件
将编译生成的驱动插件(如 qsqluxsql.dll / libqsqluxsql.so)放入 QT 的 SQL 驱动插件目录(通常为 plugins/sqldrivers/),确保 QT 应用能够通过 QUXSQL 驱动名动态加载该驱动。
2.4 环境配置
驱动依赖 UXDB 的 C 接口库 libuxsql,需配置环境变量,将 UXDB 的 lib 目录(包含 libuxsql 等库文件)加入其中,确保运行时能正确加载该库:
- Linux:将 UXDB 的
lib 目录加入 LD_LIBRARY_PATH
- Windows:将 UXDB 的
lib 目录加入 PATH
2.5 连接参数
| 参数 | 默认值 | 说明 |
| host | 127.0.0.1 | 数据库服务器地址 |
| port | 52025 | UXDB 默认端口 |
| database | uxdb | 默认数据库名 |
| user | uxdb | 默认用户名 |
| password | ****** | 数据库用户密码 |
3. 快速启动
下面代码演示使用 QT 驱动连接 UXDB 数据库并执行查询。
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
// 1. 添加并注册 UXDB QT 驱动连接(驱动名 QUXSQL)
QSqlDatabase db = QSqlDatabase::addDatabase("QUXSQL");
// 2. 设置连接参数
db.setHostName("127.0.0.1");
db.setPort(52025); // UXDB 默认端口 52025
db.setDatabaseName("uxdb");
db.setUserName("uxdb");
db.setPassword("password");
db.setConnectOptions("sslmode=disable"); // sslmode 等参数通过连接选项传递
// 3. 打开连接
if (!db.open()) {
qDebug() << "连接失败:" << db.lastError().text();
return;
}
// 4. 执行 SQL
QSqlQuery query(db);
if (query.exec("SELECT * FROM student")) {
while (query.next()) {
qDebug() << query.value(0).toString();
}
}
// 5. 关闭连接
db.close();
4. 接口介绍
4.1 QSqlDatabase(数据库连接)
4.1.1 QSqlDatabase
QSqlDatabase();
QSqlDatabase(const QSqlDatabase &other);
| 名称 | 描述 |
| other(输入) | 另一个同类型对象,用于拷贝构造或克隆 |
4.1.2 open
bool open();
bool open(const QString& user, const QString& password);
| 名称 | 描述 |
| user(输入) | 连接用户名 |
| password(输入) | 连接密码。 |
- 返回值:成功返回
true,失败返回 false。
4.1.3 close
void close();
4.1.4 isOpen
bool isOpen() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.1.5 isOpenError
bool isOpenError() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.1.6 tables
- 功能:列出库中所有表 / 视图 / 系统表
- 函数:
QStringList tables(QSql::TableType type = QSql::Tables) const;
| 名称 | 描述 |
| type(输入)(可选) | 表类型(QSql::Tables / QSql::Views / QSql::SystemTables 等)。 |
4.1.7 primaryIndex
QSqlIndex primaryIndex(const QString& tablename) const;
4.1.8 record
- 功能:获取指定表的结构(
QSqlRecord)
- 函数:
QSqlRecord record(const QString& tablename) const;
4.1.9 exec
- 功能:在连接上执行一条 SQL 语句并返回查询对象
- 函数:
QSqlQuery exec(const QString& query = QString()) const;
| 名称 | 描述 |
| query(输入)(可选) | SQL 语句文本 |
4.1.10 lastError
QSqlError lastError() const;
- 参数:无。
- 返回值:返回最近一次错误信息
QSqlError 对象。
4.1.11 isValid
bool isValid() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.1.12 transaction
bool transaction();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.1.13 commit
bool commit();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.1.14 rollback
bool rollback();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.1.15 setDatabaseName
void setDatabaseName(const QString& name);
4.1.16 setUserName
void setUserName(const QString& name);
4.1.17 setPassword
void setPassword(const QString& password);
4.1.18 setHostName
void setHostName(const QString& host);
4.1.19 setPort
- 功能:设置端口号(UXDB 默认
52025)
- 函数:
void setPort(int p);
4.1.20 setConnectOptions
- 功能:设置连接选项(UXDB 用连接选项传递
sslmode 等参数)
- 函数:
void setConnectOptions(const QString& options = QString());
| 名称 | 描述 |
| options(输入)(可选) | 连接选项字符串 |
4.1.21 databaseName
QString databaseName() const;
4.1.22 userName
QString userName() const;
4.1.23 password
QString password() const;
4.1.24 hostName
QString hostName() const;
4.1.25 driverName
- 功能:获取驱动名(UXDB 为
QUXSQL)
- 函数:
QString driverName() const;
4.1.26 port
int port() const;
4.1.27 connectOptions
QString connectOptions() const;
4.1.28 connectionName
QString connectionName() const;
4.1.29 setNumericalPrecisionPolicy
void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
| 名称 | 描述 |
| precisionPolicy(输入) | 数值精度处理策略 |
4.1.30 numericalPrecisionPolicy
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
4.1.31 driver
QSqlDriver* driver() const;
4.1.32 defaultConnection
- 功能:静态成员:默认连接名(
qt_sql_default_connection)
- 函数:
static const char *defaultConnection;
- 参数:无。
- 返回值:返回默认连接名字符串常量(
qt_sql_default_connection)。
4.1.33 addDatabase
- 功能:按驱动名注册并返回一个数据库连接对象
- 函数:
static QSqlDatabase addDatabase(const QString& type, const QString& connectionName = QLatin1String(defaultConnection));
static QSqlDatabase addDatabase(QSqlDriver* driver, const QString& connectionName = QLatin1String(defaultConnection));
| 名称 | 描述 |
| type(输入) | 驱动类型(如 "QUXSQL")。 |
| connectionName(输入)(可选) | 连接名 |
| driver(输入) | 驱动对象。 |
4.1.34 cloneDatabase
static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString& connectionName);
| 名称 | 描述 |
| other(输入) | 另一个同类型对象,用于拷贝构造或克隆 |
| connectionName(输入) | 连接名 |
4.1.35 database
static QSqlDatabase database(const QString& connectionName = QLatin1String(defaultConnection), bool open = true);
| 名称 | 描述 |
| connectionName(输入)(可选) | 连接名 |
| open(输入)(可选) | 是否自动打开连接 |
4.1.36 removeDatabase
static void removeDatabase(const QString& connectionName);
| 名称 | 描述 |
| connectionName(输入) | 连接名 |
4.1.37 contains
static bool contains(const QString& connectionName = QLatin1String(defaultConnection));
| 名称 | 描述 |
| connectionName(输入)(可选) | 连接名 |
- 返回值:满足条件返回
true,否则返回 false。
4.1.38 drivers
- 功能:列出所有可用的 QT SQL 驱动名
- 函数:
static QStringList drivers();
4.1.39 connectionNames
static QStringList connectionNames();
4.1.40 registerSqlDriver
static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator);
| 名称 | 描述 |
| name(输入) | 驱动名 |
| creator(输入) | 驱动创建器。 |
4.1.41 isDriverAvailable
static bool isDriverAvailable(const QString &name);
- 返回值:满足条件返回
true,否则返回 false。
4.2 QSqlQuery(SQL 查询)
4.2.1 BatchExecutionMode(枚举)
ValuesAsRows;
ValuesAsColumns
4.2.2 QSqlQuery
explicit QSqlQuery(QSqlResult *r);
explicit QSqlQuery(const QString& query = QString(), QSqlDatabase db = QSqlDatabase());
explicit QSqlQuery(QSqlDatabase db);
QSqlQuery(const QSqlQuery& other);
| 名称 | 描述 |
| r(输入) | 底层结果集对象。 |
| query(输入)(可选) | SQL 语句文本 |
| db(输入)(可选) | 数据库连接对象。 |
| other(输入) | 另一个同类型对象,用于拷贝构造或克隆 |
4.2.3 isValid
bool isValid() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.2.4 isActive
bool isActive() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.2.5 isNull
bool isNull(int field) const;
bool isNull(const QString &name) const;
| 名称 | 描述 |
| field(输入) | 字段对象。 |
| name(输入) | 字段名 |
- 返回值:满足条件返回
true,否则返回 false。
4.2.6 at
int at() const;
4.2.7 lastQuery
QString lastQuery() const;
4.2.8 numRowsAffected
int numRowsAffected() const;
4.2.9 lastError
QSqlError lastError() const;
- 参数:无。
- 返回值:返回最近一次错误信息
QSqlError 对象。
4.2.10 isSelect
bool isSelect() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.2.11 size
- 功能:获取结果集行数(驱动声明支持
QuerySize)
- 函数:
int size() const;
4.2.12 driver
const QSqlDriver* driver() const;
4.2.13 result
const QSqlResult* result() const;
4.2.14 isForwardOnly
bool isForwardOnly() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.2.15 record
QSqlRecord record() const;
4.2.16 setForwardOnly
void setForwardOnly(bool forward);
4.2.17 exec
bool exec(const QString& query);
bool exec();
- 返回值:成功返回
true,失败返回 false。
4.2.18 value
QVariant value(int i) const;
QVariant value(const QString& name) const;
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| name(输入) | 字段名 |
4.2.19 setNumericalPrecisionPolicy
void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
| 名称 | 描述 |
| precisionPolicy(输入) | 数值精度处理策略 |
4.2.20 numericalPrecisionPolicy
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
4.2.21 seek
bool seek(int i, bool relative = false);
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| relative(输入)(可选) | 是否相对定位。 |
- 返回值:成功返回
true,失败返回 false。
4.2.22 next
bool next();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.2.23 previous
bool previous();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.2.24 first
bool first();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.2.25 last
bool last();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.2.26 clear
void clear();
4.2.27 execBatch
- 功能:按数组批量执行预处理语句(UXDB 驱动不支持
BatchOperations,需逐条执行或事务包裹)
- 函数:
bool execBatch(BatchExecutionMode mode = ValuesAsRows);
- 返回值:成功返回
true,失败返回 false。
4.2.28 prepare
bool prepare(const QString& query);
- 返回值:成功返回
true,失败返回 false。
4.2.29 bindValue
void bindValue(const QString& placeholder, const QVariant& val, QSql::ParamType type = QSql::In);
void bindValue(int pos, const QVariant& val, QSql::ParamType type = QSql::In);
| 名称 | 描述 |
| placeholder(输入) | 占位符名 |
| val(输入) | 字段值 |
| type(输入)(可选) | 参数绑定方向(QSql::In / QSql::Out / QSql::InOut)。 |
| pos(输入) | 位置或序号 |
4.2.30 addBindValue
void addBindValue(const QVariant& val, QSql::ParamType type = QSql::In);
| 名称 | 描述 |
| val(输入) | 字段值 |
| type(输入)(可选) | 参数绑定方向(QSql::In / QSql::Out / QSql::InOut)。 |
4.2.31 boundValue
QVariant boundValue(const QString& placeholder) const;
QVariant boundValue(int pos) const;
| 名称 | 描述 |
| placeholder(输入) | 占位符名 |
| pos(输入) | 位置或序号 |
4.2.32 boundValues
QMap<QString, QVariant> boundValues() const;
4.2.33 executedQuery
- 功能:获取驱动实际执行的 SQL 语句文本
- 函数:
QString executedQuery() const;
4.2.34 lastInsertId
QVariant lastInsertId() const;
4.2.35 finish
- 功能:结束查询并释放资源(驱动不支持
FinishQuery)
- 函数:
void finish();
4.2.36 nextResult
- 功能:移动到下一个结果集(驱动不支持
MultipleResultSets)
- 函数:
bool nextResult();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.3 QSqlRecord(记录(行))
4.3.1 QSqlRecord
QSqlRecord();
QSqlRecord(const QSqlRecord& other);
| 名称 | 描述 |
| other(输入) | 另一个同类型对象,用于拷贝构造或克隆 |
4.3.2 value
QVariant value(int i) const;
QVariant value(const QString& name) const;
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| name(输入) | 字段名 |
4.3.3 setValue
void setValue(int i, const QVariant& val);
void setValue(const QString& name, const QVariant& val);
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| val(输入) | 字段值 |
| name(输入) | 字段名 |
4.3.4 setNull
void setNull(int i);
void setNull(const QString& name);
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| name(输入) | 字段名 |
4.3.5 isNull
bool isNull(int i) const;
bool isNull(const QString& name) const;
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| name(输入) | 字段名 |
- 返回值:满足条件返回
true,否则返回 false。
4.3.6 indexOf
int indexOf(const QString &name) const;
4.3.7 fieldName
QString fieldName(int i) const;
4.3.8 field
QSqlField field(int i) const;
QSqlField field(const QString &name) const;
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| name(输入) | 字段名 |
4.3.9 isGenerated
bool isGenerated(int i) const;
bool isGenerated(const QString& name) const;
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| name(输入) | 字段名 |
- 返回值:满足条件返回
true,否则返回 false。
4.3.10 setGenerated
void setGenerated(const QString& name, bool generated);
void setGenerated(int i, bool generated);
| 名称 | 描述 |
| name(输入) | 字段名 |
| generated(输入) | 是否生成列 |
| i(输入) | 序号或列序号 |
4.3.11 append
void append(const QSqlField& field);
4.3.12 replace
void replace(int pos, const QSqlField& field);
| 名称 | 描述 |
| pos(输入) | 位置或序号 |
| field(输入) | 字段对象。 |
4.3.13 insert
void insert(int pos, const QSqlField& field);
| 名称 | 描述 |
| pos(输入) | 位置或序号 |
| field(输入) | 字段对象。 |
4.3.14 remove
void remove(int pos);
4.3.15 isEmpty
bool isEmpty() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.3.16 contains
bool contains(const QString& name) const;
- 返回值:满足条件返回
true,否则返回 false。
4.3.17 clear
void clear();
4.3.18 clearValues
void clearValues();
4.3.19 count
int count() const;
4.3.20 keyValues
QSqlRecord keyValues(const QSqlRecord &keyFields) const;
4.4 QSqlField(字段(列))
4.4.1 RequiredStatus(枚举)
- 功能:字段必填状态(未知 / 可选 / 必填)
- 函数:
Unknown = -1;
Optional = 0;
Required = 1
4.4.2 QSqlField
explicit QSqlField(const QString& fieldName = QString(), QVariant::Type type = QVariant::Invalid);
QSqlField(const QSqlField& other);
| 名称 | 描述 |
| fieldName(输入)(可选) | 字段名 |
| type(输入)(可选) | QVariant 类型 |
| other(输入) | 另一个同类型对象,用于拷贝构造或克隆 |
4.4.3 setValue
void setValue(const QVariant& value);
4.4.4 value
inline QVariant value() const { return val; }
4.4.5 setName
void setName(const QString& name);
4.4.6 name
QString name() const;
4.4.7 isNull
bool isNull() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.4.8 setReadOnly
void setReadOnly(bool readOnly);
4.4.9 isReadOnly
bool isReadOnly() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.4.10 clear
void clear();
4.4.11 type
QVariant::Type type() const;
- 参数:无。
- 返回值:返回字段的
QVariant 类型
4.4.12 isAutoValue
bool isAutoValue() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.4.13 setType
void setType(QVariant::Type type);
4.4.14 setRequiredStatus
void setRequiredStatus(RequiredStatus status);
4.4.15 setRequired
inline void setRequired(bool required) { setRequiredStatus(required ? Required : Optional); }
4.4.16 setLength
void setLength(int fieldLength);
| 名称 | 描述 |
| fieldLength(输入) | 字段长度。 |
4.4.17 setPrecision
void setPrecision(int precision);
4.4.18 setDefaultValue
void setDefaultValue(const QVariant &value);
4.4.19 setSqlType
void setSqlType(int type);
4.4.20 setGenerated
void setGenerated(bool gen);
4.4.21 setAutoValue
void setAutoValue(bool autoVal);
4.4.22 requiredStatus
RequiredStatus requiredStatus() const;
4.4.23 length
int length() const;
4.4.24 precision
int precision() const;
4.4.25 defaultValue
QVariant defaultValue() const;
4.4.26 typeID
int typeID() const;
4.4.27 isGenerated
bool isGenerated() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.4.28 isValid
bool isValid() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.5 QSqlError(错误信息)
4.5.1 ErrorType(枚举)
- 功能:错误类型(无错误 / 连接错误 / 语句错误 / 事务错误 / 未知错误)
- 函数:
NoError;
ConnectionError;
StatementError;
TransactionError;
UnknownError
4.5.2 QSqlError
QT_DEPRECATED QSqlError(const QString &driverText, const QString &databaseText, ErrorType type, int number);
QSqlError(const QString &driverText = QString(), const QString &databaseText = QString(), ErrorType type = NoError, const QString &errorCode = QString());
QSqlError(const QSqlError& other);
| 名称 | 描述 |
| driverText(输入) | 驱动层错误文本 |
| databaseText(输入) | 数据库层错误文本 |
| type(输入) | 错误类型 |
| number(输入) | 错误编号 |
| errorCode(输入)(可选) | 错误码(SQLSTATE) |
| other(输入) | 另一个同类型对象,用于拷贝构造或克隆 |
4.5.3 driverText
QString driverText() const;
4.5.4 databaseText
- 功能:获取数据库层错误文本(UXDB 服务端返回的消息)
- 函数:
QString databaseText() const;
4.5.5 type
ErrorType type() const;
4.5.6 number
- 功能:获取错误编号(QT 5.3 起废弃)
- 函数:
QT_DEPRECATED int number() const;
4.5.7 nativeErrorCode
- 功能:获取数据库原生错误码(UXDB 为 SQLSTATE)
- 函数:
QString nativeErrorCode() const;
4.5.8 text
QString text() const;
4.5.9 isValid
bool isValid() const;
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.5.10 setDriverText
- 功能:设置驱动层错误文本(QT 5.1 起废弃)
- 函数:
QT_DEPRECATED void setDriverText(const QString &driverText);
| 名称 | 描述 |
| driverText(输入) | 驱动层错误文本 |
4.5.11 setDatabaseText
- 功能:设置数据库层错误文本(QT 5.1 起废弃)
- 函数:
QT_DEPRECATED void setDatabaseText(const QString &databaseText);
| 名称 | 描述 |
| databaseText(输入) | 数据库层错误文本 |
4.5.12 setType
- 功能:设置错误类型(QT 5.1 起废弃)
- 函数:
QT_DEPRECATED void setType(ErrorType type);
4.5.13 setNumber
- 功能:设置错误编号(QT 5.1 起废弃)
- 函数:
QT_DEPRECATED void setNumber(int number);
4.6 QSqlIndex(索引)
4.6.1 QSqlIndex
explicit QSqlIndex(const QString &cursorName = QString(), const QString &name = QString());
QSqlIndex(const QSqlIndex &other);
| 名称 | 描述 |
| cursorName(输入)(可选) | 游标名称 |
| name(输入)(可选) | 索引名 |
| other(输入) | 另一个同类型对象,用于拷贝构造或克隆 |
4.6.2 setCursorName
void setCursorName(const QString &cursorName);
4.6.3 cursorName
inline QString cursorName() const { return cursor; }
4.6.4 setName
void setName(const QString& name);
4.6.5 name
inline QString name() const { return nm; }
4.6.6 append
void append(const QSqlField &field);
void append(const QSqlField &field, bool desc);
| 名称 | 描述 |
| field(输入) | 字段对象。 |
| desc(输入) | 是否降序。 |
4.6.7 isDescending
bool isDescending(int i) const;
- 返回值:满足条件返回
true,否则返回 false。
4.6.8 setDescending
void setDescending(int i, bool desc);
| 名称 | 描述 |
| i(输入) | 序号或列序号 |
| desc(输入) | 是否降序。 |
4.7 QSqlQueryModel(只读查询模型)
4.7.1 QSqlQueryModel
explicit QSqlQueryModel(QObject *parent = Q_NULLPTR);
4.7.2 rowCount
int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
4.7.3 columnCount
int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
4.7.4 record
QSqlRecord record(int row) const;
QSqlRecord record() const;
4.7.5 data
QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
| 名称 | 描述 |
| item(输入) | 模型索引。 |
| role(输入)(可选) | 数据角色。 |
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
| 名称 | 描述 |
| section(输入) | 段序号 |
| orientation(输入) | 方向 |
| role(输入)(可选) | 数据角色 |
bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| section(输入) | 段序号 |
| orientation(输入) | 方向 |
| value(输入) | 字段值 |
| role(输入)(可选) | 数据角色 |
- 返回值:成功返回
true,失败返回 false。
4.7.8 insertColumns
bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| column(输入) | 列号 |
| count(输入) | 数量。 |
| parent(输入)(可选) | 父对象。 |
- 返回值:成功返回
true,失败返回 false。
4.7.9 removeColumns
bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| column(输入) | 列号 |
| count(输入) | 数量 |
| parent(输入)(可选) | 父对象 |
- 返回值:成功返回
true,失败返回 false。
4.7.10 setQuery
void setQuery(const QSqlQuery &query);
void setQuery(const QString &query, const QSqlDatabase &db = QSqlDatabase());
| 名称 | 描述 |
| query(输入) | SQL 语句文本 |
| db(输入)(可选) | 数据库连接对象 |
4.7.11 query
QSqlQuery query() const;
4.7.12 clear
virtual void clear();
4.7.13 lastError
QSqlError lastError() const;
- 参数:无。
- 返回值:返回最近一次错误信息
QSqlError 对象。
4.7.14 fetchMore
void fetchMore(const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
4.7.15 canFetchMore
bool canFetchMore(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
- 返回值:满足条件返回
true,否则返回 false。
4.8 QSqlTableModel(单表可编辑模型)
4.8.1 EditStrategy(枚举)
- 功能:编辑提交策略(即时提交 / 行提交 / 手动提交)
- 函数:
OnFieldChange;
OnRowChange;
OnManualSubmit
4.8.2 QSqlTableModel
explicit QSqlTableModel(QObject *parent = Q_NULLPTR, QSqlDatabase db = QSqlDatabase());
| 名称 | 描述 |
| parent(输入)(可选) | 父对象。 |
| db(输入)(可选) | 数据库连接对象。 |
4.8.3 setTable
virtual void setTable(const QString &tableName);
4.8.4 tableName
QString tableName() const;
4.8.5 flags
- 功能:获取指定项的标志位(决定单元格是否可编辑 / 可选)
- 函数:
Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE;
4.8.6 record
QSqlRecord record() const;
QSqlRecord record(int row) const;
4.8.7 data
QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
| 名称 | 描述 |
| idx(输入) | 模型索引 |
| role(输入)(可选) | 数据角色 |
4.8.8 setData
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| index(输入) | 模型索引 |
| value(输入) | 字段值 |
| role(输入)(可选) | 数据角色。 |
- 返回值:成功返回
true,失败返回 false。
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
| 名称 | 描述 |
| section(输入) | 段序号 |
| orientation(输入) | 方向。 |
| role(输入)(可选) | 数据角色。 |
4.8.10 isDirty
bool isDirty() const;
bool isDirty(const QModelIndex &index) const;
- 返回值:满足条件返回
true,否则返回 false。
4.8.11 clear
void clear() Q_DECL_OVERRIDE;
4.8.12 setEditStrategy
virtual void setEditStrategy(EditStrategy strategy);
4.8.13 editStrategy
EditStrategy editStrategy() const;
4.8.14 primaryKey
QSqlIndex primaryKey() const;
4.8.15 database
QSqlDatabase database() const;
4.8.16 fieldIndex
int fieldIndex(const QString &fieldName) const;
4.8.17 sort
void sort(int column, Qt::SortOrder order) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| column(输入) | 列号 |
| order(输入) | 排序方向。 |
4.8.18 setSort
virtual void setSort(int column, Qt::SortOrder order);
| 名称 | 描述 |
| column(输入) | 列号 |
| order(输入) | 排序方向。 |
4.8.19 filter
QString filter() const;
4.8.20 setFilter
virtual void setFilter(const QString &filter);
| 名称 | 描述 |
| filter(输入) | 过滤条件(WHERE 子句) |
4.8.21 rowCount
int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
4.8.22 removeColumns
bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| column(输入) | 列号 |
| count(输入) | 数量。 |
| parent(输入)(可选) | 父对象。 |
- 返回值:成功返回
true,失败返回 false。
4.8.23 removeRows
bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| row(输入) | 行号 |
| count(输入) | 数量 |
| parent(输入)(可选) | 父对象 |
- 返回值:成功返回
true,失败返回 false。
4.8.24 insertRows
bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| row(输入) | 行号 |
| count(输入) | 数量。 |
| parent(输入)(可选) | 父对象。 |
- 返回值:成功返回
true,失败返回 false。
4.8.25 insertRecord
bool insertRecord(int row, const QSqlRecord &record);
| 名称 | 描述 |
| row(输入) | 行号 |
| record(输入) | 记录对象 |
- 返回值:成功返回
true,失败返回 false。
4.8.26 setRecord
bool setRecord(int row, const QSqlRecord &record);
| 名称 | 描述 |
| row(输入) | 行号 |
| record(输入) | 记录对象。 |
- 返回值:成功返回
true,失败返回 false。
4.8.27 revertRow
virtual void revertRow(int row);
4.8.28 select
virtual bool select();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.8.29 selectRow
virtual bool selectRow(int row);
- 返回值:成功返回
true,失败返回 false。
4.8.30 submit
bool submit() Q_DECL_OVERRIDE;
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.8.31 revert
void revert() Q_DECL_OVERRIDE;
4.8.32 submitAll
bool submitAll();
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.8.33 revertAll
void revertAll();
4.8.34 primeInsert
void primeInsert(int row, QSqlRecord &record);
| 名称 | 描述 |
| row(输入) | 行号 |
| record(输入) | 记录对象。 |
4.8.35 beforeInsert
void beforeInsert(QSqlRecord &record);
4.8.36 beforeUpdate
void beforeUpdate(int row, QSqlRecord &record);
| 名称 | 描述 |
| row(输入) | 行号 |
| record(输入) | 记录对象。 |
4.8.37 beforeDelete
void beforeDelete(int row);
4.9 QSqlRelationalTableModel(外键关联表模型)
4.9.1 JoinMode(枚举)
- 功能:多表关联连接方式(内连接 / 左外连接)
- 函数:
InnerJoin;
LeftJoin
4.9.2 QSqlRelationalTableModel
explicit QSqlRelationalTableModel(QObject *parent = Q_NULLPTR, QSqlDatabase db = QSqlDatabase());
| 名称 | 描述 |
| parent(输入)(可选) | 父对象。 |
| db(输入)(可选) | 数据库连接对象。 |
4.9.3 data
QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
| 名称 | 描述 |
| item(输入) | 模型索引。 |
| role(输入)(可选) | 数据角色。 |
4.9.4 setData
bool setData(const QModelIndex &item, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| item(输入) | 模型索引。 |
| value(输入) | 字段值 |
| role(输入)(可选) | 数据角色。 |
- 返回值:成功返回
true,失败返回 false。
4.9.5 removeColumns
bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
| 名称 | 描述 |
| column(输入) | 列号 |
| count(输入) | 数量。 |
| parent(输入)(可选) | 父对象。 |
- 返回值:成功返回
true,失败返回 false。
4.9.6 clear
void clear() Q_DECL_OVERRIDE;
4.9.7 select
bool select() Q_DECL_OVERRIDE;
- 参数:无。
- 返回值:成功返回
true,失败返回 false。
4.9.8 setTable
void setTable(const QString &tableName) Q_DECL_OVERRIDE;
4.9.9 setRelation
virtual void setRelation(int column, const QSqlRelation &relation);
| 名称 | 描述 |
| column(输入) | 列号 |
| relation(输入) | 外键关系。 |
4.9.10 relation
QSqlRelation relation(int column) const;
4.9.11 relationModel
virtual QSqlTableModel *relationModel(int column) const;
4.9.12 setJoinMode
void setJoinMode( QSqlRelationalTableModel::JoinMode joinMode );
4.9.13 revertRow
void revertRow(int row) Q_DECL_OVERRIDE;
4.10 QSqlRelation(外键关系描述)
4.10.1 QSqlRelation
QSqlRelation() {}
QSqlRelation(const QString &aTableName, const QString &indexCol, const QString &displayCol) : tName(aTableName), iColumn(indexCol), dColumn(displayCol) {}
| 名称 | 描述 |
| aTableName(输入) | 表名 |
| indexCol(输入) | 索引列名 |
| displayCol(输入) | 显示列名 |
4.10.2 tableName
inline QString tableName() const { return tName; }
4.10.3 indexColumn
inline QString indexColumn() const { return iColumn; }
4.10.4 displayColumn
inline QString displayColumn() const { return dColumn; }
4.10.5 isValid
inline bool isValid() const { return !(tName.isEmpty() || iColumn.isEmpty() || dColumn.isEmpty()); }
- 参数:无。
- 返回值:满足条件返回
true,否则返回 false。
4.11 QSqlRelationalDelegate(外键下拉委托)
4.11.1 QSqlRelationalDelegate
explicit QSqlRelationalDelegate(QObject *aParent = 0) : QItemDelegate(aParent) {}
4.11.2 createEditor
QWidget *createEditor(QWidget *aParent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
| 名称 | 描述 |
| aParent(输入) | 父对象。 |
| option(输入) | 选项。 |
| index(输入) | 模型索引。 |
4.11.3 setModelData
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
| 名称 | 描述 |
| editor(输入) | 编辑器控件。 |
| model(输入) | 模型对象。 |
| index(输入) | 模型索引。 |