PowerBuilder DATAWINDOW的四个缓冲
在PowerBuilder中,dw是用户前端用来存储、操纵数据的对象。
在每一个dw对象中有4个数据缓冲区,用来存储查询到和新增的数据。用户在dw中对数据的操作实际上都是将数据在这几个缓冲区中进行的,最后在用户提交数据库时,系统根据这四个缓冲区中的信息形成SQL的DML(insert delete update)语句等语句。
1、Primary Buffer 主缓冲区
这个缓冲区是存放填充dw控件中数据的,
调用DataWindow的Retrieve()函数和InsertRow()函数可以将数据填入这个缓冲区中。当使用DataWindow删除DeleteRow()和过滤函数用Filter()时,相应记录将从这一缓冲区中删除。而在执行DataWindow的Update()函数时,PowerBuilder将查看这一缓冲区中的记录,以形成SQL INSERT和UPDATE语句。
2、Delete Buffer 删除缓冲区
这个缓冲区保存的是用DeleteRow()函数从Primary Buffer(主缓冲区)中删除的记录,执行Update()函数时,系统根据这一缓冲区的记录形成DELETE语句。
3、Filter Buffer 过滤缓冲区
这个缓冲区存储的是从Original Buffer(原始缓冲区)使用Filter()函数过滤到Primary Buffer中后剩余的记录。
4、Original Buffer 原始缓冲区
这一缓冲区存储的是dw最初执行retrieve()函数时得到的全部记录。当提交数据库时,根据Primary Buffer(主缓冲区)生成的UPDATE语句和根据Delete Buffer(删除缓冲区)生成的DELETE语句都要依据这一缓冲区来构造这些SQL语句中的Where子句。 原始缓冲区由PowerBuilder内部维护,Power-Builder所提供的任何函数都无法改变它的值,不过通过PowerBuilder所提供的GetItem…系列的函数可以读出DataWindow最初从数据库中查到的原始值。通过这些函数我们可以编程实现所谓的"Undo"功能,并且得到在使用乐观锁时形成提交数据库的WHERE子句。 如果您当前使用的dw没有设置修改的权力,您将不能对Delete缓冲区和Original缓冲进行操作,而且当调用Update()时也将引起系统错误。
本文详细解析了PowerBuilder DATAWINDOW中的四种关键缓冲区:主缓冲区、删除缓冲区、过滤缓冲区和原始缓冲区,阐述了它们在数据操作中的作用及SQL语句生成过程。
1万+

被折叠的 条评论
为什么被折叠?



