简单生活 发表于 2015-1-16 22:46:33

MYSQL网页编程之DataWindow的数据缓冲区

事实上,在任何DBaaS中,解决方案提供商对如何管理物理资源都没有控制权,因此MySQL学习教程可能会发现由于DBaaS的局限性使得他们提供给客户的远远小于客户所期望的。window|数据DataWindow的数据缓冲区
张健姿01-6-22下战书03:14:44

DATAWINDOW的四个缓站区在PowerBuilder中,DataWindow是用户前端用来存储、利用数据的工具。在每个DataWindow工具中有4个二维表作为数据缓冲区,用来存储查询到的数据。用户在DataWindow中对数据处置体系外部的操纵实践上都是将数据在这几个缓冲区中举行的修正和挪动,最初在用户提交数据库时,体系依据这四个缓冲区中的信息构成SQL的IN-SERT,UPDATE,DELETE等语句。这四个缓冲区是:PrimaryBuffer这个缓冲区是寄存添补窗口中DataWindow控件中数据的,挪用DataWindow的Retrieve()函数和InsertRow()函数能够将数据填进这个缓冲区中。当利用有关DataWindow删除和过滤函数时,响应纪录将从这一缓冲区中删除。而在实行DataWindow的Update()函数时,PowerBuilder将检察这一缓冲区中的纪录,以构成SQLINSERT和UPDATE语句。DeleteBuffer这个缓冲区保留的是用DeleteRow()函数从PrimaryBuffer中删除的纪录,实行Update()函数时,体系依据这一缓冲区的纪录构成DELETE语句。FilterBuffer这个缓冲区存储的是从OriginalBuffer利用Filter()函数过滤到PrimaryBuffer中后残剩的纪录。OriginalBuffer这一缓冲区存储的是DataWindow最后实行retrieve()函数时失掉的全体纪录。当提交数据库时,依据PrimaryBuffer天生的UPDATE语句和依据DeleteBuffer天生的DELETE语句都要根据这一缓冲区来机关这些SQL语句中的Where子句。OriginalBuffer由PowerBuilder外部保护,Power-Builder所供应的任何函数都没法改动它的值,不外经由过程PowerBuilder所供应的GetItem…系列的函数能够读出DataWindow最后从数据库中查到的原始值。经由过程这些函数我们能够编程完成所谓的"Undo"功效,而且失掉在利用悲观锁时构成提交数据库的WHERE子句。假如您以后利用的DataWindow没有设置修正的权利,您将不克不及对Delete缓冲区和Original缓冲举行操纵,并且当挪用Update()时也将引发体系毛病。数据缓冲区的形态值PrimaryBuffer和DeleteBuffer都有行级和列级的形态值,这个形态值是一个列举范例。在提交时由该行的形态值来决意是不是要发生SQL语句,个中PrimaryBuffer发生的是IN-SERT和UPDATE语句,而DeleteBuffer发生的是DELETE语句。我们用GetItemStatus()函数和SetItemStatus()函数能够对这一形态值作利用。这一列举形态有以下四种:・NotModified!―――该行或行的值为查询所得,没有产生改动。・DataModified!―――该行或列的值为查询所得,产生了改动。・New!―――该行或列为一拔出的新行,数据没有产生改动(数据为空或缺省值)。・NewModified!―――该行或列为一拔出的新行,数据产生改动。改动是经由过程用户键盘输出或挪用了SetItem()函数。让我们来看上面这一实例:我们有如许一张表,表中有三个字段,个中ITEM是主键。ITEMCHAR(5);NAMECHAR(20);QUANTITYINT。在Script中我们查询这张表的纪录,失掉以下这些信息存储了在Primary和OrigianalBuffer中,个中的行号是缓冲区加上的。!TB01175000.gif在窗口中,我们编程过滤失落数目为0的行,而且加上一个空行:dw_1.SetFilter("quantity=0")dw_1.Filter()dw_1.InsertRow()这时候PrimaryBuffer的形态为:!TB01175001.gif在FilterBuffer中的纪录为:!TB01175002.gif用户在新拔出行中输出数据,删除第3行数据,并修正了第2行数据。当他分开这个DataWindow时,Primary和Delete缓冲区的形态以下:!TB01175003.gif这时候实行dw_1.update()函数,体系将基于这两个缓冲区天生SQL语句。!TB01175004.gif在PrimaryBuffer中,形态为NotModified和New!的即将被疏忽而不发生SQL语句。形态为DataModified的即将发生UPDATE语句,形态为NewModified的即将发生INSERT语句,在Delete缓冲区中的即将发生DELETE语句。四个缓冲区在编程中的使用某些DataWindow控件的函数有指定DataWindow缓冲区的功效。假如缺省,则暗示Primary缓冲区。以下是能够指定缓冲区的函数:・GetItemStatus()・GetNextModified()・GetUpdateStatus()・SetItemStatus()别的另有GetItem…系列的函数,用以查询DataWindow中的值。这些函数有:・GetItemDate()・GetItemDataTime()・GetItemDecimal()・GetItemNumber()・GetItemString()・GetItemTime()MySQL部署迅速,因此移植过程不会导致生产中断。而且,较短的学习曲线可以让你的系统管理员迅速掌握它的运行和维护。而且,MySQL的易于维护和管理意味着目前的职员可以处理目前的工作。

再见西城 发表于 2015-1-17 19:56:46

总感觉自己还是不会SQL

若相依 发表于 2015-1-21 07:14:02

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

爱飞 发表于 2015-1-30 10:50:51

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

再现理想 发表于 2015-2-6 10:14:26

从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。

谁可相欹 发表于 2015-2-15 23:17:05

原来公司用过MYSQL自己也只是建个表写个SQL

精灵巫婆 发表于 2015-3-4 18:04:52

如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.

飘灵儿 发表于 2015-3-11 20:33:00

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

活着的死人 发表于 2015-3-19 11:52:50

我个人认为就是孜孜不懈的学习

小魔女 发表于 2015-3-27 23:08:19

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
页: [1]
查看完整版本: MYSQL网页编程之DataWindow的数据缓冲区