本节提供有关的信息ndbblob.
类,模型到Blob列的句柄,并为Blob列值提供读写访问。该对象具有许多不同的状态,并提供了多种访问BLOB数据的访问方式;这些部分也在本节中描述。
- 父母类
-
没有任何
- 儿童课程
-
没有任何
- 描述
-
此类没有公共构造函数。一个例子
ndbblob.
是使用的ndboperation :: getblobhandle()
操作准备阶段的方法。(见第2.3.20节“Ndboperation类”。)这个对象作为一个手柄斑点
柱子。 - 方法
-
下表列出了此类的公共方法以及每个方法的目的或使用:
表2.33 NDBBLOB类方法和说明
名称 描述 blobsfirstblob()
获取列表中的第一个斑点。 blobsnextblob()
获取列表中的下一个blob 关闭()
在提交或中止之前发布内部资源 getBlobEventName ()
获取blob事件名称 getblobtableName()
获取Blob数据段的表名。 getcolumn()
获取一个blob列。 getLength ()
获取斑点的长度,以字节为单位 getndberror()
得到一个错误(一个 ndberror.
目的)getNdbOperation ()
获取指向操作的指针( ndboperation.
对象)这个ndbblob.
对象创建时所属的。getNull ()
检查是否是Blob值是 空值
getPos ()
获取当前阅读/写作的立场 GetState()
的状态 ndbblob.
对象getValue()
准备阅读Blob值 getVersion()
检查blob是基于语句的还是基于事件的 readData ()
从blob读取数据 setActiveHook ()
定义Blob Handle Activation的回调 setnull()
设置一个blob 空值
setPos ()
设置开始阅读/写作的位置 setValue ()
准备插入或更新BLOB值 截短()
将一个blob截断到给定的长度 writedata()
写入Blob数据
getblobtableName()
和getBlobEventName ()
是静态方法。最多
ndbblob.
方法(几乎所有返回类型的人㈡
) 返回0
成功和-1
万一失败。 - 类型
-
由...定义的公共类型
ndbblob.
这里显示:
BLOB数据存储。斑点
数据存储在2个位置:
头和内联字节存储在blob属性中。
Blob的数据段存储在命名的单独表中
ndb $ blob_
, 在哪里tid
_cid
tid
是表ID,以及cid
是blob列ID。
可以使用适当的设置内联和数据段大小柱子
方法创建表时。看到第2.3.1节“列类”第2.3.1节,有关这些方法的更多信息。
数据访问类型。ndbblob.
支持3种类型的数据访问:这些数据访问类型可以组合应用,只要它们按照上面给出的顺序使用。
在准备阶段,
ndbblob.
方法getValue()
和setValue ()
都是用来准备读或写的斑点
已知尺寸的值。在准备阶段,
setActiveHook ()
用于定义一旦句柄变为活动状态的例程。在活跃阶段,
readData ()
和writedata()
用于读写斑点
具有任意大小的值。
BLOB操作。斑点
当执行下一个事务时,操作生效。在某些情况下,ndbblob.
强制执行隐式执行。为了避免这种情况,您应该始终对完整的blob数据段进行操作。
用NdbTransaction: executePendingBlobOps ()
刷新读和写,如果没有挂起的操作,这样可以避免任何执行惩罚。在执行操作之后或在下一次扫描结果之后,这是不必要的。
ndbblob.
还支持从事件中读取博客或预先绘制的数据。可以在检索主表上的下一个事件后读取句柄。数据立即可用。(见第2.3.16节“Ndbeptoperation类”,以获取更多信息。)
Blobs和ndboperations。ndboperation.
方法作用ndbblob.
对象具有以下特征:
NdbOperation: insertTuple ()
必须使用ndbblob :: setValue()
如果是斑点
属性是不属的。NdbOperation: readTuple ()
与任何锁定模式一起使用可以读取但不是写入BLOB值。当。。。的时候
lm_commitedread.
锁定模式使用readtuple()
,锁定模式自动升级到LM_Read
每当blob属性被访问。NdbOperation: updateTuple ()
可以覆盖现有的值使用ndbblob :: setValue()
或在活动阶段期间更新它。NdbOperation: writeTuple ()
始终覆盖blob值,必须使用ndbblob :: setValue()
如果是斑点
属性是不属的。NdbOperation: deleteTuple ()
创建隐含,不可访问的斑点
把手。任何锁定模式的扫描都可以使用它的blob句柄来读取blob值,但不能写入它们。
使用扫描
lm_exclusive.
锁定模式可以使用锁定模式updatecurrenttuple()
;返回的操作必须明确创建自己的blob句柄。使用扫描
lm_exclusive.
锁定模式可以删除行值(因此,因此blob值)使用deleteCurrentTuple ()
;这创建了隐式不可访问的Blob句柄。返回的操作
lockCurrentTuple ()
无法更新blob值。
已知的问题。以下是在使用时遇到的已知问题或限制ndbblob.
对象:
太多了待审
斑点
操作可以溢出I / O缓冲区。桌子和它的
斑点
数据段表不是由原子创建的。
ActiveHook是一个定义的数据类型,被用作回调setActiveHook ()
方法。(见NdbBlob: setActiveHook ()。)
定义。activehook.
是定义的自定义数据类型如下所示:
typedef int activehook(ndbblob *我, void *arg)
- 描述
-
这是一个回调
NdbBlob: setActiveHook ()
,并立即调用一次准备好的操作(但未提交)。任何电话getValue()
或者setValue ()
首先进行。的斑点
手柄是活跃的readData ()
或者writedata()
可用于操纵斑点
价值。与用户定义的参数一起传递ndbblob.
。setActiveHook ()
在错误的情况下返回非零值。
- 描述
-
此方法初始化属于当前操作的BLOB列表,并返回列表中的第一个BLOB。
- 签名
-
ndbblob * blobsfirstblob(void)
- 参数
-
没有任何。
- 返回值
-
一个指向所需blob的指针。
- 描述
-
使用该方法获取使用的BLOB列表中的下一个
blobsfirstblob()
。看到ndbblob :: blobsfirstblob()。 - 签名
-
ndbblob * blobsnextblob(void)
- 参数
-
没有任何。
- 返回值
-
一个指向所需blob的指针。
- 描述
-
关闭BLOB句柄,在提交或中止事务之前释放内部资源。换句话说,应用程序已经完成了从给定的BLOB读取的信号。只有在blob的时可以调用此方法
状态
是积极的
。 - 签名
-
int close(boolexecPendingBlobOps=真的)
- 参数
-
此方法具有单个布尔参数
execPendingBlobOps
。如果此参数的值真的
(默认值),在Blob句柄关闭之前刷新任何挂起的BLOB操作。如果execPendingBlobOps
是假
,然后假设BLOB句柄没有待读取或写入操作来刷新。 - 返回值
-
成功。
读取操作和锁定。在使用读取操作上创建Blob句柄时LM_Read
或者lm_exclusive.
随着LockMode
,只有关闭在此操作上创建的所有Blob句柄后,读取操作才能解锁。
当用锁模式读取包含blob的行时lm_commitedread.
,模式自动升级为LM_Read
确保一致性。在这种情况下,当所有Blob句柄已关闭时,将通过呼叫自动执行该行的解锁操作关闭()
方法,将待处理的写入操作添加到BLOB中。升级的锁被呼叫后释放执行()
。
- 描述
-
此方法获取Blob事件名称。如果主事件监视blob列,则会创建blob事件。该名称包括主事件名称。
- 签名
-
static int getblobeventname(char *名称,ndb *NDB.,const char *事件,const char *列)
- 参数
-
此方法在此提出以下四个参数:
名称
:Blob事件的名称。NDB.
:相关NDB.
目的。事件
:主事件的名称。列
:Blob列。
- 返回值
-
0
成功,-1
在失败。
- 描述
-
此方法获取BLOB数据段表名。
该方法通常仅用于测试和调试目的。
- 签名
-
static int getBlobTableName (char* . txt名称,ndb *NDB.,const char *桌子,const char *列)
- 参数
-
此方法在此提出以下四个参数:
名称
:BLOB数据段表的名称。NDB.
:相关NDB.
目的。桌子
:主表的名称。列
:Blob列。
- 返回值
-
回报
0
成功,-1
在失败。
- 描述
-
此方法以字节为单位获得Blob的当前长度。
- 签名
-
int getLength(UINT64&长度)
- 参数
-
对长度的引用。
- 返回值
-
斑点的长度(以字节为单位)。对于一个
空值
Blob,这个方法返回0
。区分长度的斑点0
blob和一个是空值
,可以使用getNull ()
方法。
- 描述
-
此方法检查blob的值是否为
空值
。 - 签名
-
gettnull (int&isNull)
- 参数
-
对整数的引用
isNull
。调用后,此参数具有以下值之一,解释如下所示:-1
:Blob未定义。如果这是一个不受欢迎的斑点,则此结果会导致状态错误。0
: blob具有非空值。1
: blob的值为空值
。
- 返回值
-
没有任何。
- 描述
-
使用此方法获取错误对象。错误可以是特定于闪烁的,或者可以从失败的隐式操作复制。除非操作已具有非零错误代码,否则错误代码将复制回操作。
- 签名
-
const NdbError& getdberror (void
- 参数
-
没有任何。
- 返回值
-
一个
ndberror.
目的。
- 描述
-
此方法可用于找到该操作的操作
ndbblob.
是相关的。 - 签名
-
const NdbOperation* getdboperation (void) const
- 参数
-
没有任何。
- 返回值
-
一个指向操作的指针。
方法返回的指针所引用的操作可以用
ndboperation.
或者NdbScanOperation
目的。看到第2.3.20节“Ndboperation类”, 和第2.3.24节“ndbscanoperation类”,以获取更多信息。
- 描述
-
这个方法获取一个blob中的当前读/写位置。
- 签名
-
int getPos (Uint64&p)
- 参数
-
一个参数,对位置的引用。
- 返回值
-
回报
0
成功,或-1
在失败。(成功调用后,p
将在Blob中持有当前读/写位置,从一开始就是一个字节数。)
- 描述
-
使用此方法准备读取BLOB值;该值可在调用后可用。用
getNull ()
检查空值
价值;用getLength ()
要获得BLOB的实际长度,并检查截断。getValue()
将当前读/写位置设置为读取的数据结束后的点。 - 签名
-
INT GetValue(void *数据,UINT32字节)
- 参数
-
此方法接受两个参数。控件的指针
数据
阅读;第二个是字节
被读。 - 返回值
-
0
成功,-1
在失败。
- 描述
-
此方法用于区分Blob操作是否是基于语句的或基于事件的。
- 签名
-
void getVersion (int&版本)
- 参数
-
此方法采用单个参数,对BLOB版本的整数引用(操作类型)。
- 返回值
-
以下三个值之一:
-1
: 这是一个”普通的”(statement-based)团。0
:这是一个基于blob的事件操作,跟随其数据的更改。1
:这是一个基于事件操作的Blob,在其数据的任何变化之前。
getVersion()
始终成功,假设它被调用为有效实例的方法ndbblob.
。
- 描述
-
此方法用于从BLOB读取数据。
- 签名
-
int readData (void*数据,uint32&字节)
- 参数
-
readData ()
接受指向的指针数据
要读,并注明编号字节
读。 - 返回值
-
回报
0
成功,-1
在失败。在成功的调用之后,数据
指向已读取的数据,以及字节
保存读取的字节数。
- 描述
-
此方法定义BLOB句柄激活的回调。准备好操作的队列将以NO-COMMIT模式执行到此点;然后,调用回调。有关其他信息,请参阅ndbblob :: Activehook.。
- 签名
-
int setActiveHook (ActiveHook* . getactivehookactiveHook, void *arg)
- 参数
-
这个方法需要下面列出的两个参数:
指向
activehook.
。一个指向
空白
,对于要传递给回调的任何数据。
- 返回值
-
0
成功,-1
在失败。
- 描述
-
此方法将诸如读取或写入数据的BLOB内的位置设置。
- 签名
-
int setpos(Uint64p)
- 参数
-
setPos()方法采用单个参数
p
(一个未签名的64位整数),这是读取或写入数据的位置。的价值p
一定是之间0
和Blob的当前长度。
”疏”NDB API不支持BLOB;换句话说,BLOB中不能没有未使用的数据位置。
- 返回值
-
0
成功,-1
在失败。
- 描述
-
该方法用于准备插入或更新BLOB值。截断的任何现有的BLOB数据超过新数据。在执行操作之前,数据缓冲区必须保持有效。
setValue ()
将当前读/写位置设置为数据结束后的点。你可以设置数据
到空指针(0
),以便创造空值
价值。 - 签名
-
int setvalue(const void *数据,UINT32字节)
- 参数
-
此方法在此列出的两个参数:
的
数据
将插入或用于覆盖blob值。的数量
字节
- 是,长度数据
。
- 返回值
-
0
成功,-1
在失败。
- 描述
-
此方法用于将BLOB截断到给定长度。
- 签名
-
int truncate(uint64长度= 0)
- 参数
-
截短()
采用单个参数,指定新的长度
截断的blob要截断。这种方法没有影响长度
大于blob的当前长度(您可以使用getLength ()
)。 - 返回值
-
0
成功,-1
在失败。
- 描述
-
该方法用于将数据写入
ndbblob.
。在成功调用之后,读/写位置将在写入BLOB的数据之后的第一个字节。写入超过blob数据的当前端自动扩展blob。
- 签名
-
int writeData (const void*数据,UINT32字节)
- 参数
-
此方法接受两个参数,一个指向
数据
写的,和数量字节
来写。 - 返回值
-
0
成功,-1
在失败。