在准备自考毕业论文的过程中,用PB做了一个小系统。PowerBuilder是一种基于C/S结构的面向对象的可视化工具,主要是安装在客户端使用,作为数据库应用系统的开发工具而存在。这也就说明了PowerBuilder更是一种数据库开发工具。
数据窗口是PowerBuilder功能最强,最具特色的一个对象。在应用程序中,数据窗口主要由数据窗口控件和数据窗口对象两部分组成。其实数据窗口控件就相当于是一个容器,将数据窗口对象定义的数据源、数据的显示风格显示给用户。自考程序我开发的是一个药品销售管理系统。在该系统中更多的是采用了数据窗口对象。其功能无外乎都是对一些数据的录入、查询、删除和修改。下面介绍一下这几个操作:
1.建立应用程序与数据库的连接
虽然建立了数据窗口对象和数据库控件的关联,但是在应用程序中,数据窗口还是不能工作,因为在应用程序中还没有建立和数据库连接。应用程序和数据库的连接是通过事务对象来完成的。事务对象就相当于是应用程序和数据库之间通信的一个桥梁。建立数据库连接语法:
// Profile Medicine SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN='" //打开数据源进行连接 connect using sqlca; //判断数据源是否连接 if sqlca.sqlcode<>0 then //连接失败给予提示 messagebox("连接数据库失败",sqlca.sqlerrtext) return end if
2.检索数据
为数据窗口控件分配事务对象并检索数据,一般在数据窗口的open事件完成此功能。
//数据窗口dw设置连接事务sqlca dw_1.settransobject(sqlca) //数据窗口控件从数据库中提取数据 dw_1.retrieve() //此处可提供检索参数,如给定一个时间范围,则可按时间进行检索
InsertRow()函数在数据窗口主缓冲区的指定位置插入一行,例如:
//getrow()函数可以得到当前的行号 row=dw_1.getrow() row=dw_1.insertrow()
4.删除数据
DeleteRow()函数在数据窗口主缓冲区内的指定位置删除一行,例如:
Integer is_delete is_delete=messagebox("提示","确定要删除当前行吗?") if is_delete=1 then dw_1.deleterow(0) end if
5.更新数据
Updata()函数保存在数据窗口中对数据的修改。当用户在数据窗口上插入、删除行,或直接修改某列的数据时,这些都是在数据窗口的缓冲区上进行,并没有在数据库中产生世家的变化,Updata()函数使所做的修改在数据库中产生变化,执行成功返回1,否则返回-1.例如:
Integer is_update is_update=messagebox("警告","是否要更新数据库的内容?") if is_update=1 then if dw_1.update()=1 then //如果保存成功提交事务 commit; else //如果保存失败滚回事务 messagebox("错误","数据内容更新错误") rollback; end if end if
以上是对PB对数据窗口控件的一些简单操作。总的来说,PowerBuilder数据窗口对象是专门为了访问后台的数据库服务的。数据窗口控件就是一个封装好的控件,实现了与数据库进行绑定,也就是说我们直接对数据控件进行增删改查就可以了,而不用编写后台的SQL语句。