转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
Power Builder中的交易控制         ★★★★

Power Builder中的交易控制

作者:闵涛 文章来源:闵涛的学习笔记 点击数:612 更新时间:2009/4/22 23:09:17

前言:基于Windows平台的数据库前端开发工具Power Builder自问世以来,由于其方便简洁的界面设计,以及丰富完善的对象支持,在国内外受到很多用户的欢迎.随着用户应用系统开发层次的提高,深入了解PowerBuilder设计思想,别是与外部数据库的联接口是相当必要的.专题就PB自身所设计的交易控制机制做以下深入的探讨:

一.通讯缓冲区.
二.建立通讯连接及参数约定.
三.交易控制机制.
四.Data Window SQL语句翻译.
五.应用示例. 

一.通讯缓冲区:

  PB软件通过通讯缓冲区与各数据库厂商的提供的网络Server通讯.默认的系统通讯缓冲区为SQlCA.因为PB4.0以下版本与Sybase接口由Sybase open client for window4.2平台开发,所以PB中通讯缓冲区实质为db_library中dbprocess结构扩展.PB除了利用通讯缓冲区自动替用户完成SQL语句翻译,装配,发送及Server返回结果暂存,数据类型匹配等工作外,还利用其在PB端完成对Server端交易的提交/回滚控制. 

  Sybase SQL Server system10可利用通讯缓冲区的11个属性,分三类:

a.连接类:DBMS,database,LogIn,LogPass,Servername,DBParm.
b.返回类:SQLcode,SQLNRows,SQLDBcode,SQLErrText.
c.交易类:Autocommit.

  一个通讯缓冲区同时只能用于和一个Server上不同数据库通讯.PB可通过定义另外的数据缓冲区完成同时对不同Server上数据的存取.Script片段如下: 

transaction T1 
T1=CREATE transaction 
Connect Using T1; 

二.建立通讯连接及参数约定: 

  PB通过Connect/disconnect[Usingtranobjectname]函数,根据tranobjectname所指的通讯缓冲区中连接类属性设置与Server进行连接/切断连接.连接成功后Server端使用sp_who可看到一条线索,及使用线索的PB应用程序通过Dbpram属性设置的应用信息.对于同一个通讯缓冲区发多个Connect命令,在Server端上产生一个线索.对于广域网上PB用户来说,建立连接时间较长,应避免频繁使用Connect/disconnect命令建立/断开连接.

  Autocommit系统参数设置PB每次向Server发送的交易请求是否自动提交.当其值为false(非自动提交)时PB在发出交易请求后可通过继续发送Commit 或 Rollback 命令对先前的交易进行提交/回滚控制.若Autocommit=True,则PB对已发出的交易无控制手段.Autocommit值可编程修改.应用中当用户需要自己控制交易时,应注意在交易发出后,尽快 地执行Commit/Rollback命令. 

  DBparm系统参数设置PB在与Server通讯时,双方通讯参数的约定.主要包括以下一些参数: 

AppName,Host通知ServerPB的应用程序名及PB所在机器名. 
Async(4.0) DBGettime(4.0)设置PB与Server采用异步通讯方式,以及Server端响应返回时间. 

三.交易控制机制: 

  PB所提供的交易控制手段有两种: 

1.内嵌SQL. 
2.Datawindow内存. 

  PB script语言中涉及交易控制的函数主要有4个: 

commit; 
rollback; 
settrans 
settransobject 

1.内嵌SQL: PB允许用户在script中嵌套基本的SQL数据操纵语言(DML),以及本地cursor操作.DML包括:select[Holdlock],update,delete,insert.如第二部分所述,当Autocommit=false时,PB在向Server发出内嵌SQL语句后,必须显式地发送Commit/Rollback命令才能真正地提交/回滚内嵌SQL所做的交易;同时PB通过通讯缓冲区(默认为SQLCA)的返回结果类属性sqlcode来表明已发出的内嵌SQL语句是否成功.SQLCode值有3种 :

0:成功 
100:成功无行返回 
-1:失败 

  若Autocommit=True,则PB虽然可以通过SQLCode显示内嵌SQL语句执行状态,但由于无法就该执行状态对交易进行再控制.本地Cursor操作实值上是先对Server端数据照快照,然后将生成的数据集合取到PB端,在PB端模拟实现关系型数据库的Cursor操作.当数据集合取到PB端后,PB不再对Server端数据加锁(Select with Hold lock除外). 

2.Datawindow对象: Datawindow 对象可以独立地提供建立/断掉Server连接,执行交易,控制交易提交/回滚等功能.与Server连接方面,其内部有一个独立的通讯缓冲区,DW负责将对DW操纵的script语句(retrieve, update)翻译成内嵌SQL语句.并结合Autocommit设置自动控制交易或提供PB近一步交易控制程序.在本地数据处理方面,DW提供三个数据缓冲区(primary,delect, insert)实现对DW自身数据管理. 

  下文侧重DW与Server连接近一步描述. 

  a.使用settran方式. 
  settran(transactionobjectname)函数将transactionobjectname所指的通讯缓冲区内容copy到DW自身的内部通迅缓冲区.当采用settran方式发retrieve或updata命令与Server通讯时,DW使用自己内部通讯缓冲区与Server通讯,自动执行commit/discommit操作.当交易失败时,DW自动回滚交易.settran方式与Autocommit参数设置无关.它相当于Autocommit=True的情况.当由于此方式下,DW每次交易时额外地进行commit/discommit操作广域网上,速度将会受到影响.

  b.使用settran object方式. 
  settran object(transactionobjectname)函数使得DW共享与transactionobjectname.所指数据缓冲区与Server通讯,DW不会自动地进行connect/disconnect.也不会自动进行Commit和Rollback以上操作均可编程控制.(to be continued...) 


[常用软件]Power Builder窗口使用两技巧  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台