CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

特别有意义的dw_control.update()安全性讨论...

楼主wqzone(wqzone)2005-05-18 12:26:09 在 PowerBuilder / 基础类 提问

请大家看下面的一段常用代码:  
  uf_save_data()函数:  
  public   int   uf_save_data()  
  {  
  if   dw_head.update()   <   0   then  
        return   -1  
  end   if  
  if   dw_body.update()   <   0   then  
        return   -1  
  end   if  
  return   0  
  }  
  在cb_sava按钮的clicked事件中调用该uf_save_data()函数:  
  If   MessageBox("提示","即将保存数据,是否继续!",Question!,YesNo!,1)   <>   1   Then  
        Return  
  End   If  
  If   uf_save_data()   <   0   Then  
        Rollback   Using   Sqlca;  
        MessageBox("提示","保存失败,请检查网络...")  
  Else  
        Commit   Using   Sqlca;  
        MessageBox("提示","保存失败,请检查网络...")  
  End   If  
  ------------------------------------------------------  
  就上面的常用代码存在严重的安全问题:  
  比如dw_head.update()执行成功,但是dw_body.update()执行不成功的时候,问题就出来了.  
  因为dw_head在update()执行成功以后dw_head.update()会自动重置所有缓冲区域所有行的更新标志,而dw_body.update()执行失败以后(不会重新置更新标志),跟着会返回-1,在cb_save的clicked事件中会Rollback   事务对象。用户根据错误提示更改了数据以后,重新单击cb_save按钮的时候,执行uf_save_data()函数,dw_head.update()根据各个缓冲区域的行状态将不会生成任何更新Sql语句(由于前面已经将更新标志给清除了),导致该更新的数据没有根新。  
  ------------------------------------------------------  
  解决办法是   :  
    uf_save_data()函数:  
  public   int   uf_save_data()  
  {  
  if   dw_head.update(true,false)   <   0   then  
        return   -1  
  end   if  
  if   dw_body.update(true,false)   <   0   then  
        return   -1  
  end   if  
  dw_head.resetupdate()  
  dw_body.resetupdate()  
  return   0  
  } 问题点数:50、回复次数:12Top

1 楼rightyeah(众妙之门)回复于 2005-05-18 12:44:22 得分 0

不错,顶下先Top

2 楼j9dai(翔)(DoItNow)回复于 2005-05-18 13:09:49 得分 0

好贴Top

3 楼lzheng2001(1加1)回复于 2005-05-18 13:56:07 得分 0

就是用这种方法解决Top

4 楼hbdkfk(卡夫卡)回复于 2005-05-18 14:28:19 得分 0

学习Top

5 楼cuixuf(A4〓小小小小刀〓(...---...))回复于 2005-05-18 14:38:08 得分 0

学习...Top

6 楼nimittz(尼米兹---------努力升星GOGOGO)回复于 2005-05-18 15:56:46 得分 0

呵呵,俺也发现了这个问题Top

7 楼li_d_s(鄙视那些不懂Java却跑来乱骂的人,.NET没啥了不起)回复于 2005-05-18 16:09:39 得分 0

好贴Top

8 楼MyOhMyXP(MyOhMy)回复于 2005-05-18 17:57:05 得分 0

学习!!!Top

9 楼w7a8(阿飞)回复于 2005-05-19 11:35:18 得分 0

markTop

10 楼wqzone(wqzone)回复于 2005-05-26 18:07:43 得分 0

大家都多发表一点意见呀,不要关说好...Top

11 楼princelily(百合)回复于 2005-05-27 08:52:11 得分 50

同意,我也是这么做的。update()函数中指定两个参数。控制更新标志。Top

12 楼wqzone(wqzone)回复于 2005-05-30 02:19:12 得分 0

go   onTop

相关问题

  • 安全性讨论
  • 讨论Session的安全性
  • 关于php的安全性问题?请讨论
  • [讨论]oracle和mysql安全性问题(回复有分)
  • 请大家近来讨论一下关于SQLserver2000的安全性问题
  • 表单身份验证中的安全性问题,欢迎大家讨论!
  • 表单身份验证中的安全性问题,欢迎大家讨论!
  • 关于登陆安全性问题~(大家讨论下UP着有分,看看如果更安全)
  • 2000安全性
  • AJAX的安全性

关键词

  • dw
  • uf
  • update
  • save
  • data

得分解答快速导航

  • 帖主:wqzone
  • princelily

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo