您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > PowerBuilder程序设计教程第08章
第8章数据窗口对象的应用创建数据窗口对象使它和数据库相连接,执行数据的检索、修改、删除等工作。注意:数据窗口对象只有通过数据窗口控件才能发挥它的巨大作用。8.1数据窗口控件的使用数据窗口控件是窗口中一个标准的PowerBuilder控件,它放在窗口中,是窗口的一部分,不能独立存在。数据库中的数据要在数据窗口对象中显示和修改,必须依靠数据窗口控件。把数据窗口控件放在窗口中,使这个数据窗口控件和相应的数据窗口对象关联,通过这个数据窗口控件完成数据窗口对象和数据库的连接。8.1.1添加数据窗口控件打开要添加数据窗口控件的窗口,选择菜单【Insert|Control|DataWindow】,在窗口的适当位置点击鼠标左键,这时出现一个空白框,这个空白框就是数据窗口控件。结束放映第一页上一页下一页最后一页8.1.2更改数据窗口控件属性常用的属性有:(1)DataObject:设置与数据窗口控件关联的数据窗口对象名称。(2)TitleBar复选框:选中表示数据窗口控件显示标题栏,否则不显示。(3)Title文本框:定义标题栏中标题内容。(4)ControlMenu复选框:选中表示在标题栏上显示控制按钮,否则不显示。(5)MaxBox、MinBox:选中这两个复选框分别表示给标题栏添加最大化按钮和最小化按钮。(6)HScrollBarVscrollBar:选择这两个复选框分别表示给数据窗口控件添加水平和垂直滚动条。(7)Border复选框和BorderStyle下拉列表框:用来设置控件的边界形状。(8)Name:编辑框中的内容表示数据窗口控件名称,编写脚本时使用该名称。(9)Other标签页:设置控件的位置、大小及鼠标在控件中的形状。结束放映第一页上一页下一页最后一页8.1.3设置数据窗口控件中关联的数据窗口对象(1)静态关联选择数据窗口控件,点击右键,选择Properties进入数据窗口控件的属性视窗,在DataObject框中输入要关联的数据窗口对象。(2)动态关联程序运行过程中,若一个数据窗口控件在不同情况下要关联不同的数据窗口对象,这时就要用脚本控制,实现动态关联。脚本控制语句如下:dw_controlname.dataobject=“d_objectname”。8.2操作数据窗口对象中数据的前提程序运行时,要操纵数据窗口对象中的数据,就要在程序中连接数据库,让数据窗口对象与数据库之间建立连接。必须首先创建应用程序与数据库之间的连接,应用程序与数据库之间的连接是通过事务对象完成的。(1)什么是事务对象事务对象是一个传递应用程序与数据库之间信息的一个变量,它驻留在内存中,存储着用于连接数据库及从数据库得到反馈的所有信息,它定义了数据库与应用程序连接的参数。一个应用程序开始创建时,系统就自动定义一个名为SQLCA的默认全局变量。结束放映第一页上一页下一页最后一页8.2操作数据窗口对象中数据的前提(2)事务对象的属性事务对象共有15个属性,可以分为两类,一类有10个,用来描述连接数据库的信息,如所连接的数据库的名称;另一类有5个,用来接受有关数据库或最近执行SQL语句的情况或状态,如数据库操作是否成功。AutoCommit:这是一个布尔型属性。它指定是否将数据库设置成自动提交所有事物。当它为TRUE时,由系统自动提交所有事务,当为FALSE时,用户必须自己在程序中设置事务管理,并在需要的时候对数据库进行提交事务。它的默认值是FALSE。DataBase:这是一个字符串类型的属性。它指定要连接的数据库名称。DBMS:这是一个字符串类型的属性。它指定应用程序所使用的数据库管理系统的名称,如ODBC。DBPass:这是一个字符串类型的属性。它描述的是用户连接数据库的密码。Lock:这是一个字符串类型的属性。它是数据库的保护级别,一般不必给出。LogID:这是一个字符串类型的属性。它用于指定登录数据库服务器所需的用户名或用户的ID。结束放映第一页上一页下一页最后一页8.2操作数据窗口对象中数据的前提SQLCode:这是一个长整型(Long)的属性。它用来指定最近一次数据库操作成功与否的代码,共有三个返回值:0表示操作成功;100表示操作成功,但没有返回数据;-1表示操作失败。用户可以从SQLDBCode或SQLErrTex中得到具体详细的错误信息。SQLDBCode:这是一个长整型的属性。它包含了数据库错误代码,不同的数据库,错误代码不同,但大部分数据库厂商都用0表示操作成功,100表示成功但没有检索到数据,负数表示没有成功。SQLErrText:这是一个字符串类型的属性。它包含了数据库操作的错误信息。UserID:这是一个字符串类型的属性。它指定了连接数据库的用户名或用户的ID。8.2.1使用系统默认的事务对象SQLCA系统提供了一个默认的全局事务对象SQLCA,可以在程序的任何地方使用这个事物对象。结束放映第一页上一页下一页最后一页8.2.1使用系统默认的事务对象SQLCA下面是一个连接ODBC数据库所用的代码://ProfileExerciseSQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=Connectstring='DSN=exercise'这段脚本用来设置事务对象的属性,一般把它写在应用程序的Open事件中8.2.2自己定义事务对象一般情况下,使用系统提供的全局事务处理对象SQLCA就可以了,但有时需要连接多个数据库,这时只用一个SQLCA就不够了,需要用户自己定义事务对象,因为一个事务对象只能保存一个数据库的连接信息。自己定义事务对象步骤如下:(1)确定事物对象变量的作用域和名称像变量一样,事务对象的作用域有局部的、实例的、全局的和共享的,声明的地方决定了事务对象的作用域,事务对象变量的类型是transaction。声明事务对象的格式为:transaction用户自定义的事务对象名如要声明一个全局的事务对象sqluser,则在定义全局变量的位置书写transactionsqluser声明语句。结束放映第一页上一页下一页最后一页8.2.2自己定义事务对象(2)创建事务对象实例上面只是声明了一个自定义的事务对象sqluser,但该事务对象并没有创建。创建语句如下:自定义的事务对象名=createtransaction如要创建事物对象sqluser,描述创建的语句为sqluser=createtransaction。要使得打开应用后,就能使用自己定义的事务处理对象sqluser,则该语句必须写在应用的Open事件中。(3)确定事务对象变量的属性自定义事务对象的属性设置可参考前面的SQLCA属性的设置,将SQLCA信息拷贝到应用的Open事件后,将其SQLCA改为sqluser即可。//ProfileExercisesqluser.DBMS=ODBCsqluser.AutoCommit=Falsesqluser.DBParm=Connectstring='DSN=exercise'(4)注意:系统提供的默认事务对象SQLCA,用户不能声明、创建、删除它,系统会自动处理对它的操作;给事务对象赋值时,只能给事物对象的属性一一赋值,不能将一个事物对象直接赋给另一事务对象。结束放映第一页上一页下一页最后一页8.2.3连接数据库定义了事务对象之后,要在数据窗口对象中处理数据库中数据,还必须配合其它语句一起使用。(1)connect:数据库连接该语句表示与数据库连接。它的语句结构是:connect[using事务对象名];若是使用sqlca,可以使用两种格式:connect;connectusingsqlca;上面两条语句作用一样,也就是说使用系统默认的sqlca,语句中可以指明,也可以不指明,默认指sqlca。下面两条语句作用不同:connect;connectusingsqluser;第一条使用默认的事务对象sqlca,第二条使用自定义的事务对象sqluser。(2)disconnet:断开与数据库的连接该语句表示断开与数据库的连接,它的语法结构是:disconnect[using事务对象名];使用方法同(1)connect。结束放映第一页上一页下一页最后一页8.2.3连接数据库(3)commit:提交事务用来提交当前所做的一切事务,实际上是向数据库提交所有数据修改工作。它的语句结构及使用方法同(1)connect。(4)rollback:取消事务它用来回滚当前的所有事务,实际上是取消自上次提交事务以来的这一段时间内所有数据修改工作。它的语句结构及使用方法同前面(1)connect。(5)settransobject():事务对象与数据窗口控件关联通过connect语句,将一个事务对象与数据库连接起来了,但为了能使一个具体的数据窗口访问数据库,还必须把数据窗口控件和事务对象关联起来。关联语句中一定要使用数据窗口控件名,而不是数据窗口对象名。使用下面语句将数据窗口控件和事务对象关联。语句格式如下:DWControlname.settransobject(TransactionObjectName)如让dw_1数据窗口控件与sqlca事务对象关联,语句写为dw_1.settransobject(sqlca)。该语句一般写在数据窗口控件所在窗口的Open事件中。结束放映第一页上一页下一页最后一页8.3操作数据窗口中的数据8.3.1检索数据(retrieve)检索数据使用函数retrieve。(1)函数不带参数格式:dwcontrolname.retrieve()如数据窗口控件dw_1检索数据,可用dw_1.retrieve()语句。这种情况的使用简单,用于没有设定任何参数的数据窗口对象。(2)函数带有n个参数,格式是dwcontrolname.retrieve(参数1,参数2,…,参数n),如数据窗口控件dw_1检索数据,可用dw_1.retrieve(参数1,参数2,…,参数n)。要特别注意,这里参数的个数、类型、与数据窗口对象中定义的变量个数、类型要相对应,若这里给定的参数个数少于数据窗口对象中定义的变量个数,程序运行时就会出现错误;若这里的参数个数多于数据窗口对象中定义的变量个数,程序运行时就会自动去掉后面多余的参数。检索函数多用于settransobject(sqlca)语句后面。(3)函数的返回值函数返回一个整型值,表示从数据库中检索到的行数;若没有匹配的结果,则返回值是0;若检索中出现了错误,返回值是-1。结束放映第一页上一页下一页最后一页8.3.1检索数据(retrieve)(4)执行函数时触发的事件DBError:检索失败时发生。RetrieveRow:每行数据检索出来以后发生。RetrieveStart:检索开始时发生。RetrieveEnd:检索完成后发生。(5)典型应用dw_1.settransobject(sqlca)dw_1.retrieve()将数据窗口与事务对象关联,并检索数据窗口中数据。8.3.2更新数据(update)Update函数用于把当前数据窗口中从上次执行update或retrieve函数以来进行的所有修改保存到数据库中。(1)常用语法形式如下:DWcontrolname.Update()如更新数据窗口控件dw_1,脚本写为:dw_1.update()。结束放映第一页上一页下一页最后一页8.3.2更新数据(update)(2)函数返回值若返回值是1表示成功,返回值是-1表示失败。(3)执行函数时触发的事件DBErrorSQLPreviewUpdateStartUpdateEnd(4)典型应用ifdw_1.update()=1thencommit;elserollback;endif数据窗口中数据更新正确则提交事务(保存数据),否则取消事务(不保存数据)。结束放映第一页上一页下一页最后一页8.3.3从数据窗口控件中读数据(getitemstring)处理数据时,经常要从数据窗口中读出数据,然后再进行处理。(1)常用语法形式:DWcontrolnam
本文标题:PowerBuilder程序设计教程第08章
链接地址:https://www.777doc.com/doc-2887668 .html