- class QSqlResult#
QSqlResult
类提供了访问特定SQL数据库数据的抽象接口。 更多...概要#
方法#
def
__init__()
def
addBindValue()
def
at()
def
bindValueType()
def
bindingSyntax()
def
boundValue()
定义
clear()
定义
driver()
定义
exec_()
定义
isActive()
定义
isSelect()
定义
isValid()
定义
lastError()
定义
lastQuery()
虚方法#
定义
bindValue()
定义
data()
定义
exec()
定义
execBatch()
定义
fetch()
定义
fetchFirst()
定义
fetchLast()
定义
fetchNext()
定义
handle()
定义
isNull()
定义
nextResult()
定义
prepare()
定义
record()
定义
reset()
定义
setActive()
定义
setAt()
定义
setQuery()
定义
setSelect()
定义
size()
注释
该文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段的翻译做出贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来通知我们
详细说明#
通常情况下,您会使用
QSqlQuery
而不是QSqlResult
,因为QSqlQuery
为QSqlResult
的数据库特定实现提供了一个通用的包装。如果您正在实现自己的 SQL 驱动程序(通过
QSqlDriver
子类化),您需要提供一个自己的QSqlResult
子类,该类实现了所有纯虚函数和其他所需的虚拟函数。另请参阅
- class BindingSyntax#
枚举类型指定在准备好的查询中指定占位符的不同语法。
常量
描述
QSqlResult.PositionalBinding
使用 ODBC 风格的位置语法,其中“?”用作占位符。
QSqlResult.NamedBinding
使用 Oracle 风格的语法,带有命名的占位符(例如,“:id”)
另请参阅
- class VirtualHookOperation#
- __init__(db)#
- 参数:
db –
QSqlDriver
使用数据库驱动程序
db
创建一个QSqlResult
。对象初始化为非活动状态。另请参阅
- addBindValue(val, type)#
- 参数:
val – 对象
type –
ParamTypeFlag
的组合
将参数类型
paramType
的值val
绑定到当前记录(行)中下一个可用的位置。另请参阅
- at()#
- 返回类型::
int
返回结果的当前(基于0的)行位置。可能返回特殊值
BeforeFirstRow
或AfterLastRow
。- bindValue(placeholder, val, type)#
- 参数:
placeholder - str
val – 对象
type –
ParamTypeFlag
的组合
这是一个重载函数。
将参数类型为
paramType
的val
值绑定到当前记录(行)中的placeholder
名称。- bindValue(pos, val, type)
- 参数:
pos - int
val – 对象
type –
ParamTypeFlag
的组合
将参数类型为
paramType
的val
值绑定到当前记录(行)中的位置index
。另请参阅
- bindValueType(placeholder)#
- 参数:
placeholder - str
- 返回类型::
这是一个重载函数。
返回绑定到给定的
placeholder
名称的值的参数类型。- bindValueType(pos)
- 参数:
pos - int
- 返回类型::
返回绑定在位置
index
的参数类型。另请参阅
返回预处理查询使用的绑定语法。
- boundValue(placeholder)#
- 参数:
placeholder - str
- 返回类型::
object
这是一个重载函数。
返回给定
placeholder
名称在当前记录(行)中绑定的值。另请参阅
- boundValue(pos)
- 参数:
pos - int
- 返回类型::
object
返回当前记录(行)中位置
index
处绑定的值。另请参阅
bindValue()
boundValues()
- 返回绑定值数量
- 返回类型::
int
返回结果中绑定值的数量。
另请参阅
boundValues()
-
返回当前记录(行)中,位置在
index
处的绑定值名称。 - 参数:
pos - int
- 返回类型::
str
返回当前记录(行)中,位置在
index
处的绑定值名称。- boundValueNames()
- 返回类型::
字符串列表
返回所有绑定值的名称。
- clear()
清除整个结果集并释放任何相关资源。
- abs理data(i)#
- 参数:
索引 – int
- 返回类型::
object
以QVariant形式返回当前行中索引为
index
的字段数据。只有当结果处于活动状态并定位在有效记录上,且index
为非负数时,才会调用此函数。派生类必须重新实现此函数,并返回字段index
的值,或在无法确定时返回QVariant()。- detachFromResultSet()#
- driver()#
- 返回类型::
返回与结果关联的驱动器。这是传递给构造函数的对象。
- exec()#
- 返回类型::
bool
执行查询,如果成功则返回true,否则返回false。
另请参阅
- execBatch([arrayBind=false])#
- 参数:
arrayBind – bool
- 返回类型::
bool
- exec_#
- 返回类型::
bool
- executedQuery()#
- 返回类型::
str
返回实际执行的查询。这可能与传入的查询不同,例如在使用了绑定值并准备查询的情况下,如果基础数据库不支持准备好的查询。
另请参阅
- 抽象fetch(i)#
- 参数:
索引 – int
- 返回类型::
bool
将结果定位到任意(基于0的)行
index
。只有当结果处于活动状态时,才会调用此函数。派生类必须重新实现此函数,将结果定位到行
index
,并且使用适当的值调用setAt()
。返回 true 表示成功,或返回 false 表示失败。- 抽象fetchFirst()#
- 返回类型::
bool
将结果定位到结果中的第一条记录(行 0)。
只有当结果处于活动状态时,才会调用此函数。派生类必须重新实现此函数,将结果定位到第一条记录,并使用适当的值调用
setAt()
。返回 true 表示成功,或返回 false 表示失败。另请参阅
- 抽象fetchLast()#
- 返回类型::
bool
将结果定位到结果中的最后一条记录(最后一行)。
只有当结果处于活动状态时,才会调用此函数。派生类必须重新实现此函数,将结果定位到最后一条记录,并使用适当的值调用
setAt()
。返回 true 表示成功,或返回 false 表示失败。另请参阅
- fetchNext()#
- 返回类型::
bool
将结果定位到结果中下一个可用的记录(行)。
此功能仅在结果处于活动状态时调用。默认实现使用下一个索引调用
fetch()
。派生类可以重写此功能并以某种方式定位结果到下一记录,并使用适当的值调用setAt()
。返回 true 表示成功,或使用 false 表示失败。另请参阅
- fetchPrevious()#
- 返回类型::
bool
将结果定位到结果中的上一条记录(行)。
此功能仅在结果处于活动状态时调用。默认实现使用上一个索引调用
fetch()
。派生类可以重写此功能并以某种方式定位结果到下一记录,并使用适当的值调用setAt()
。返回 true 表示成功,或使用 false 表示失败。- handle()#
- 返回类型::
object
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
返回此结果集的低级数据库句柄,或在没有句柄的情况下返回无效的 QVariant。
警告
请务必谨慎使用,并且只有当您清楚自己在做什么时才使用此功能。
警告
如果修改结果(例如清除它),则返回的句柄可能会成为过时的指针。
警告
如果结果尚未执行,则句柄可为空。
警告
PostgreSQL:在仅向前模式中,调用
QSqlResult
的句柄可以在调用fetch()
、fetchFirst()
、fetchLast()
、fetchNext()
、fetchPrevious()
或 nextResult() 后更改。返回的句柄取决于数据库,在访问之前请查询变体的类型名称。
以下示例检索 sqlite 结果的句柄
db = QSqlDatabase.database("sales") query = QSqlQuery("SELECT NAME, DOB FROM EMPLOYEES", db) v = query.result().handle() if v.isValid() and qstrcmp(v.typeName(), "sqlite3_stmt*") == 0: # v.data() returns a pointer to the handle sqlite3_stmt handle = sqlite3_stmt(v.data()) if handle: # ...
以下代码片段返回 PostgreSQL 或 MySQL 的句柄
if qstrcmp(v.typeName(), "PGresult*") == 0: handle = PGresult(v.data()) if handle: # ... if qstrcmp(v.typeName(), "MYSQL_STMT*") == 0: MYSQL_STMT handle = MYSQL_STMT(v.data()) if handle: # ...
另请参阅
句柄()
- hasOutValues()#
- 返回类型::
bool
如果查询中至少有一个绑定值是
QSql::Out
或InOut
,则返回true
;否则返回false
。另请参阅
- isActive()#
- 返回类型::
bool
如果结果中有要检索的记录,则返回
true
;否则返回false
。- isForwardOnly()#
- 返回类型::
bool
如果你只能向前滚动结果集,则返回
true
;否则返回false
。另请参阅
- abstract isNull(i)#
- 参数:
索引 – int
- 返回类型::
bool
如果当前行在第
index
位置的字段为null,则返回true
;否则返回false
。- isPositionalBindingEnabled()#
- 返回类型::
bool
- isSelect()#
- 返回类型::
bool
如果当前结果来自
SELECT
语句,则返回true
;否则返回false
。另请参阅
- isValid()#
- 返回类型::
bool
如果结果定位在有效记录上(即,结果不在第一条或最后一条记录之前),则返回
true
;否则返回false
。另请参阅
返回与结果相关的最后一个错误。
另请参阅
- lastInsertId()#
- 返回类型::
object
如果数据库支持,则返回最近插入行的对象ID。如果没有插入任何值或数据库未能返回ID,则返回一个无效的QVariant。如果有多个行被插入,则行为未定义。
注意,对于Oracle数据库,将返回行的ROWID,而对于MySQL数据库,将返回行的自增字段。
另请参阅
- lastQuery()#
- 返回类型::
str
返回当前的SQL查询文本,如果没有则返回空字符串。
另请参阅
- nextResult()#
- 返回类型::
bool
- 抽象 numRowsAffected()#
- 返回类型::
int
返回最后一个执行查询影响的行数,如果无法确定或查询是
SELECT
语句,则返回 -1。另请参阅
- prepare(query)#
- 参数:
query – str
- 返回类型::
bool
准备给定的
query
以执行;查询通常使用占位符,以便可以重复执行。如果查询成功准备,则返回 true;否则返回false
。另请参阅
- record()#
- 返回类型::
如果查询是活动的,则返回当前记录;否则返回一个空的
QSqlRecord
.默认实现始终返回一个空的
QSqlRecord
.另请参阅
- 抽象 reset(sqlquery)#
- 参数:
sqlquery – str
- 返回类型::
bool
设置结果,使用 SQL 语句
query
用于后续数据检索。派生类必须重写此函数并将查询应用于数据库。此函数仅在将结果设置为非活动状态并在新结果的第一条记录之前调用。派生类应返回 true,如果查询成功并可重复使用;否则返回 false。
另请参阅
- resetBindCount()#
重置绑定参数的数量。
- savePrepare(sqlquery)#
- 参数:
sqlquery – str
- 返回类型::
bool
使用底层数据库功能准备给定的
query
。如果查询成功准备,则返回true
;否则返回false
。注意:此方法应被称作“safePrepare()”。
另请参阅
- setActive(a)#
- 参数:
a – bool
此函数提供派生类设置内部活动状态为
active
。另请参阅
- setAt(at)#
- 参数:
at – int
此函数提供给派生类使用,用于设置内部(基于0的)行位置为
index
。另请参阅
- setForwardOnly(forward)#
- 参数:
forward – bool
设置单向读取模式为
forward
。如果forward
为 true,则只能执行fetchNext()
以在结果中进行导航。由于结果无需缓存,单向读取模式需要的内存远少于缓存模式。默认情况下,此功能是禁用的。将单向读取设置为 false 是对数据库引擎的建议,数据库引擎将最终决定结果集是单向读取还是可滚动。
isForwardOnly()
将始终返回结果集的正确状态。注释
在执行查询后调用 setForwardOnly 可能导致最佳情况下出现意外结果,最坏情况下可能会崩溃。
注释
为了确保单向读取查询成功完成,应用程序应在执行查询以及在导航查询结果后检查
lastError()
以确认没有错误。警告
PostgreSQL:在单向读取模式下导航查询结果时,不要在同一数据库连接上执行任何其他 SQL 命令。这将导致查询结果丢失。
此函数提供给派生类使用,用于将最后一次错误设置为
error
。另请参阅
- setNumericalPrecisionPolicy(policy)#
- 参数:
policy –
NumericalPrecisionPolicy
- setPositionalBindingEnabled(enable)#
- 参数:
enable – bool
- setQuery(query)#
- 参数:
query – str
将当前结果的查询设置为
query
。您必须调用reset()
来在数据库上执行查询。另请参阅
- setSelect(s)#
- 参数:
s – bool
此函数提供供派生类使用,以指示当前语句是否为 SQL
SELECT
语句。如果语句是SELECT
语句,则select
参数应为 true;否则应为 false。另请参阅
- 抽象 size()#
- 返回类型::
int
返回
SELECT
结果的大小,或如果无法确定或查询不是SELECT
语句,则为 -1。另请参阅