描述
此函数打开位于数据库深发展中qRow行szColumn,表szTable中的BLOB的句柄;换句话说,相同的BLOB将被选择:
SELECT szColumn FROM szDb.szTable WHERE rowid = qRow;
PB语法
METHOD BlobOpen ( _ BYVAL hDbc AS DWORD, _ BYVAL strDb AS STRING, _ BYVAL strTable AS STRING, _ BYVAL strColumn AS STRING, _ BYVAL qRow AS QUAD, _ OPTIONAL BYVAL flags AS LONG _ ) AS LONG |
参数
hDbc
[in]连接句柄。
strDb
[in]数据库名称。请注意,数据库名称不是包含数据库的文件名,而是使用ATTACH连接数据库时AS关键字后出现的数据库的符号名称。对于主数据库文件,数据库名称为“main”。对于TEMP表,数据库名称为“temp”。
strTable
[in]表名。
strColumn
[in]列名称。
qRow
[in]行号。如果BLOB句柄指向的行由UPDATE,DELETE或ON CONFLICT副作用修改,则BLOB句柄被标记为“已过期”。如果行的任何列都被更改,即使是除了BLOB句柄打开的列之外的列也是如此。调用BlobRead和BlobWrite过期的BLOB句柄失败,返回代码为SQLITE_ABORT。在BLOB到期之前写入BLOB的更改在BLOB到期之前不会回滚。如果交易继续完成,这些更改将终止。
flags
[in]如果flags参数不为零,则BLOB将被打开以进行读写访问。如果为零,则BLOB被打开以进行读取访问。不可能打开作为索引或主键的一部分进行写入的列。如果启用外键约束,则无法打开作为子键的一部分进行写入的列。
返回值
成功后,返回SQLITE_OK,并将新的BLOB句柄写入ppBlob.否则返回错误代码,ppBlob设置为空指针。此函数设置通过ErrCode和ErrMsg和相关功能访问的数据库连接错误代码和消息。请注意,ppBlob变量始终被初始化,无论该函数的成功或失败如何,都可以在ppBlob上安全地调用BlobClose.
备注
使用BlobBytes功能来确定打开的Blob的大小。blob的大小可能不会被此函数更改。使用UPDATE SQL命令更改blob的大小。
如果需要,可以使用BindZeroblob和ResultZeroblob函数和内置的zeroblob SQL函数来创建一个空的零填充的blob,使用此函数读取或写入。
为了避免资源泄漏,最终将通过调用BlobClose来释放每个打开的BLOB句柄。