描述
此函数打开数据库strDb中qRow行strColumn,表strTable中的BLOB的句柄;换句话说,相同的BLOB将被选择:
SELECT szColumn FROM szDb.szTable WHERE rowid = qRow;
PB语法
METHOD BlobOpen ( _ BYVAL strDb AS STRING, _ BYVAL strTable AS STRING, _ BYVAL strColumn AS STRING, _ BYVAL qRow AS QUAD, _ OPTIONAL BYVAL flags AS LONG _ ) AS LONG |
参数
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变量总是初始化为使BlobCloseBlobClose可以安全地使用,无论此函数的成功或失败如何。
备注
使用BlobBytes函数来确定打开的Blob的大小。blob的大小可能不会被此函数更改。使用UPDATE SQL命令更改blob的大小。
如果需要,可以使用BindZeroblob和ResultZeroblob函数和内置的zeroblob SQL函数,以创建一个空的零填充blob,使用此函数读取或写入。
为了避免资源泄露,每个开放的BLOB句柄最终都会通过调用BlobClose来释放。