数据库第9章 创建数据库Word文件下载.docx
《数据库第9章 创建数据库Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库第9章 创建数据库Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
1)表(table)相当于数据文件
用于存放数据库中的数据,一个数据库可以由许多表构成。
例如一个图书管理数据库P328
2)列(column)
表的数据项,一个表可以有很多数据项。
3)主键(primary)
主键是表中唯一标识一个记录的列或列的组合。
即表中任意两行数据的主键值不能相同,其中列的取值非空。
实体完整性约束
P328
4)索引(index)
索引是实现表中数据逻辑排序的方法,可以是一个列也可以是多个列的组合,有了索引后,表中原本无序的数据,就可以按照所设定的顺序输出。
可以是重复索引也可以是唯一索引(不允许重复)。
5)外键(foreignkey)
外键是那些与其他表的主键相对应的列,它被用来连接多个表,反映表之间的一种隶属关系,保证数据的一致性。
外键用于体现两个表之间的关系
参照完整性约束
6)视图
视图是一种特殊的虚拟表,可以象表一样地访问地访问和使用。
但视图并不是真正的表,它没有自己的数据,在数据库中并不存在数据结构,它的数据来自一个或多个数据库中的表和视图。
视图在数据库中是作为(query查询,实际上是SQLSELECT语句)来保存的。
当引用一个视图时,数据库管理系统执行对应的查询,将查询结果作为视图来用。
使用视图只能浏览数据库中的数据,而不能修改数据库中的数据。
使用视图的好处在于,可以隐藏数据库的结构,只将数据展现给用户。
7)触发器
8)存储过程
9.2在powerbuilder中使用数据库
powerbuilder的最主要的特色之一是方便有效地访问和管理数据库。
在powerbuilder的开发环境和应用程序能够访问数据库中的数据之前,必须首先与建立数据库联系,也就是连接到数据库上。
Powerbuilder与数据库的连接建立在驱动程序之上。
Powerbuilder支持ODBC接口,这使得PB几乎可以访问所有的数据库。
powerbuilder7.0提供了ASA数据库
一、物理数据库
是一个磁盘文件,表及数据等全部在这个文件中。
二、ODBC数据源
ODBC(OpenDataBaseConnectivity)是微软公司提出的开放式数据库互联系统。
ODBC接口以SQL作为标准的查询语言来存取连接的数据源。
允许单个应用同时访问多个不同的数据库管理系统。
ODBC数据源指明了数据库的基本联结参数。
例如数据库的名称、数据库驱动程序、用户名、口令等。
三、DBProfile
这是powerbuilder开发环境中操作数据库所需要的,在我们设计的程序中DBProfile,主要作用是告诉powerbuilder当前与哪个数据源相连,在PB的开发环境中操纵的数据库,就是在数据库画板上操纵的数据库就是DBProfile所指定的数据源的数据库。
在PB的数据库画板上操作数据库,需要以下几步。
(1)创建物理数据库
(2)定义ODBC数据源
(3)定义DBProfile仅在PB开发环境中操纵数据库需要,运行时不需要。
(4)连接数据库
在本机上创建ASA数据库,系统将自动定义数据源和DBProfile。
从其他机器上拷贝的数据库,必须定义数据源。
创建数据库的步骤:
1.打开数据库画板
2.选择ODBC下的——utilities下的——createasadatabase
3.建好新库,系统会自动给新建的数据库创建数据源以及DBprofile
4.创建表、定义表结构,在数据库的table选项中选择newtable,创建表
5.创建主键、索引和外键
四、在应用程序中使用数据库
应用程序与数据库在建立连接时首先要给事务对象的相关属性赋值,然后通过嵌入式SQL语句CONNECT建立应用程序和数据库的连接。
不同的数据库管理系统使用的事务对象的属性也不相同。
SQLCA是全局事务对象变量,在应用程序的任何地方都可以使用。
Sqlca.dbms=”ODBC”
Sqlca.Dbparm=”connectstring=’DSN=mydatabase;
UID=dba;
PWD=sql’”
Connectusingsqlca;
以上的程序是建立应用程序与数据源mydatabase的连接,一般这种工作在程序开始时执行。
在关闭应用程序时,应断开应用程序与数据库的连接:
disconnectusingsqlca;
第10章应用对象
每个程序都有个入口点,运行时程序从这个入口点启动,比如,用C语言编写程序时,main()就是入口点。
与此相似,用PowerBuilder开发应用程序时,同样需要一个入口点,不过它不是个函数,而是PowerBuilder的一个对象——应用对象。
每个PowerBuilder应用程序都必须有一个、而且只能有一个应用对象,也可以说,应用对象代表了应用程序,程序从应用对象开始运行。
除了作为应用程序的入口点这一功能外,应用对象还定义了应用程序的系统级行为,例如,应用程序使用哪些应用库(一种PowerBuilder定义的特殊格式的文件)来保存用到的各种对象、对象的缺省字体、应用程序的图标等。
PowerBuilder是个面向对象的开发环境,用它开发的应用程序以对象和事件驱动为基本特征。
作为PowerBuilder的对象之一,应用对象也有一组事件,当用户运行应用程序时,首先触发应用对象的Open事件,在这个事件的事件处理程序中我们可以设置应用的初始状态,装入其它对象、连接数据库等。
当用户终止应用程序时,应用对象的Close事件被触发,在这个事件的事件处理程序中完成必要的系统清理工作,例如断开与数据库的连接、清除用户自定义对象等。
当程序运行过程中发生严重错误时,应用对象的SystemError事件被触发,这时可以报告错误类型和性质,以便及时排除错误。
由此可见,应用对象对开发完美的PowerBuilder应用程序至关重要、不可或缺。
本章我们将详细介绍应用对象的功能与用法。
10.1应用对象的属性
应用对象是开发PowerBuider应用程序必须用到的对象,应用对象的属性对整个应用程序的开发起着举足轻重的作用,它的字体属性决定了应用程序开发过程中其它对象的文本字体,因此,在设计应用的开始就选择一种适合绝大多数对象使用的字体将会减轻开发压力,让你在最短的时间内研制出优质的应用系统。
利用应用对象可以为应用程序设置下述属性:
缺省的字体属性(包括字体、风格、大小、颜色);
应用程序的库搜索路径;
应用程序的图标;
缺省的全局对象的类型;
一、设置缺省字体
应用对象的四个字体属性决定了开发应用程序过程中经常使用的四种字体,这四个字体属性分别为:
TextFont,ColumnFont,HeaderFont,LabelFont。
TextFont决定窗口中的控件、用户对象、数据窗口中静态文本的缺省字体;
ColumnFont指定数据窗口中检索出的数据使用的缺省字体;
HeaderFont定义列表风格(tabular)和网格风格(grid)数据窗口对象中列标题的缺省字体;
LabelFont确定自由风格(freeform)数据窗口对象中列标签的缺省字体。
在开始开发应用程序时,根据需要先设定这些字体后,以后设计其它对象时就免除了反复设置字体的重复劳动。
字体包括四方面的内容:
:
字体类型(如宋体、楷体、行楷等)、字体大小(如10,11,12),字体风格,字体的颜色。
二、设置应用程序图标应用程序
图标的用途是代表应用程序。
程序运行后,如果用户将其最小化,该图标就出现在屏幕上。
三、指定缺省全局变量的类型
PowerBuider提供了五个内置的全局变量(SQLCA,SQLDA,SQLSA,Error,Message),它们都有缺省的类型,但开发者可对其进行修改。
10.2应用对象的事件应用
对象的事件不多,一共只有六个,但它们却十分重要。
它的Open事件必须编写事件处理程序,否则整个应用程序就会什么也不做就结束了。
通常情况下,在Open事件处理程序中我们设置应用系统的初始环境、建立与数据库的连接、打开应用的第一个窗口等。
下面介绍应用对象的Open,Close,Idle,SystemError,ConnectionBegin,ConnectionEnd事件的发生时机与常见用法。
一、Open(打开)事件
应用对象的Open事件在启动应用程序时发生,且只发生一次。
是应用程序的入口,对所有应用程序来说,都必须对该事件编程,否则运行应用程序时系统将出现一个警告对话框,提醒你必须对应用对象的Open事件编程。
一般来说,在Open事件处理程序中应该完成下述工作:
完成初始化工作
利用INI文件设置某些属性,或初始化一个事务对象
连接要访问的数据库
打开应用程序的第一个窗口
二、Close(关闭)事件
应用对象的Close事件只发生一次,它发生在退出应用程序、返回到操作系统之前,是应用程序的出口,通常在这个事件的事件处理程序中完成下述工作:
删除应用程序运行过程中创建的对象(例如额外的事务对象等)往INI文件中保存状态信息,以便下次运行程序时恢复状态
关闭应用程序中尚未关闭的文件
断开与数据库的连接
三、Idle(空闲)事件
Idle事件在下述情况下发生:
首先在应用程序的某段程序中使用Idle()函数设置一个定时器时间间隔,如果在时间间隔规定的时间内用户没有敲击键盘或使用鼠标(即用户没有操作应用程序),那么系统产生应用对象的Idle事件,用户的任何交互操作都将重设该定时器。
Idle事件的用途有下述几种:
创建自己独具特色的屏幕保护程序
隐藏机密数据并强制用户在长时间未操作应用程序时重新输入密码
了解用户是否长时间未操作应用程序,如果是的话,应用程序可以自动退出、返回系统,这样有助于减少数据库的连接数目并节省数据库资源。
四、SystemError(系统出错)事件
SystemError事件是处理运行错误的最后一道关卡,用来处理最严重的错误,可以在此处编写错误处理和可能的恢复代码,简单的措施是显示出错信息。
如果未对此事件编程,那么系统出错时PowerBuider会通过对话框显示错误代码和错误信息,不过它是用英文表达的,对国内用户显然不友好。
五、ConnectBegin(连接开始)事件
ConnectBegin事件用于分布式PowerBuider应用的服务器端。
当客户程序试图连接到服务器程序时,触发服务器程序应用对象的ConnectBegin事件。
六、ConnectEnd(连接结束)事件
ConnectEnd事件用于分布式PowerBuider应用的服务器端。
当客户程序试图断开与服务器程序的连接时,触发服务器程序应用对象的ConnectEnd事件。
例子:
p9书上的计算器程序
第11章创建自定义函数和结构
由于应用程序的要求千差万别,标准函数有时仍然满足不了用户的要求,所以还需要创建符合自己要求的函数。
PowerBuilder的函数分两种类型:
全局函数和对象函数。
全局函数独立于任何对象,在整个应用程序中都能使用;
而对象函数则与特定的窗口、菜单、用户对象等相关联,是对象的一部分,根据定义可能在整个程序中使用,也可能只茌对象内部使用。
PowerBuilder的标准函数同样分为全局函数和对象函数两类,如messagebox()、类型转换函数等就是全局函数;
而GetltemString()、AddItem()等就是对象函数。
结构是组织相关变量的一种方法,例如,可以把姓名、地址、工资等信息放到一个结构变量中,并作为一个整体传递给函数。
与自定义函数相似,结构也有两种类型:
全局结构和对象结构。
全局结构在整个程序中都能使用,而对象结构则只能在该对象中使用。
下面介绍创建自定义函数和结构的方法。
一、创建自定义全局函数
其步骤为:
1.击file菜单中“New”按钮创建新的自定义全局函数,弹出定义用户自定义函数的对话框。
2.定义函数的名字:
通常以f_开头(指示这是个用户自定义函数),以与系统内置函数相区别。
“Access”下拉列表框指定函数的访问范围,因为当前我们定义的函数是全局函数,因此该列表框不能选择。
3.定义返回值的类型:
“Return”下拉列表框用于指定函数返回值的类型,缺省时为Integer。
注意:
如果定义了函数的返回值,则在函数体中必须有
return返回值
向调用的脚本返回值。
例如PB的标准函数messagebox返回一个整数,表示用户单击的是哪个按钮。
4.定义函数的调用参数:
“Arguments”组框中定义函数参数,每个参数占据一行,每行前的数字,“Type”下拉列表框中选择参数类型,在“PassBy”下拉列表框中指定参数传递方式
参数的传递方式:
(1)值传递:
“value”,将实际参数的值传递给函数参数;
不改变实际实际参数的值。
例如定义一个函数f_add1(integern)
n=n+1
在脚本中调用该函数
a=3
f_add1(a)
(2)地址传递:
reference,把实际参数的地址传递给函数,此时,函数如果修改了形式参数的值,那么实际参数的值也就被修改了;
f_add1(refintegern)
n=n+1
在上层脚本中调用该函数
inta=3
f_add1(a)
此时a的值是什么?
(3)只读传递:
readonly,不过不允许修改参数的值。
对于一个只读传递的形式参数,如果在函数中试图改变参数的值,函数编译时就会发生错误。
二、创建自定义对象函数
可以为ApplicationObject对象、窗口对象、用户对象创建自定义函数,这种函数称为对象函数。
对象函数一般只能在该对象内使用,当该对象正在打开且该函数的Access属性为public时,其他对象的程序可以调用该函数,不过需在函数前加对象名,如W_pipe.w_initial()。
如果函数所在的对象没有被打开(即不在内存中),则该对象函数不能被其他对象的程序调用。
自定义对象函数的函数名的
访问属性设置的设置:
(1)public:
该函数在整个程序中都可访问;
(2)private:
该函数只能在附属于当前窗口的程序中使用;
(3)protected:
该函数只能在附属于当前窗口的程序以及附属于该窗口的后继窗口的程序中使用。
三、创建结构
结构实际上定义了一个新的数据类型,应用程序中使用点操作符(.)访问结构变量的元素。
结构和用户自定义函数一样,有两种全局结构和对象结构。
全局结构可以在整个应用程序中使用,而这些结构与对象相关,与对象保存在一起,而且只能在附属于对象的代码中使用。
例如我们定义了结构s_Person,它有三个分量Name、Address、Salary(分别代表姓名、地址、工资),使用下述语句说明结构变量lp_Person并给分量赋值:
s_Personlp_Person
lp_Person.Name="
李辉"
lp_Person.Address="
北京市"
lp_Person.Salary=3000
使用应用对象的例子:
1.实现在应用程序空闲时,隐藏主窗口,打开登录窗口重新登录,实现对应用系统的保护。
实现步骤:
在应用对象的open事件中,利用idle(intn)函数,设置启动应用对象的idle事件的时钟。
在idle时间中,隐藏主窗口,打开登录窗口,当输入口令正确时,显示主窗口。
2.在systemerror事件中,显示错误类型和错误信息。
首先了解error的几个属性
(1)ClassDefinitionPowerObject出错对象对应的类的信息.
(2)LineInteger出错的脚本行号
(3)NumberInteger错误号
(4)ObjectString出错的对象类型
(5)ObjectEventString出错的事件
(6)TextString错误信息.
(7)WindowMenuString出错的窗口或菜单的名字
。
P254
7、
intI
intbw,sw,gw
forI=100to999
bw=(i/100)
sw=int((I-bw*100)/10)
gw=I-bw*100-sw*10
ifI=bw^3+sw^3+gw^3then
MessageBox(“注意”,string(i)+”是水仙花数”)
Endif
Next
8、
intI
forI=2toint(sqrt(m))
ifmod(m,I)=0then
MessageBox(“注意”,string(m)+”不是素数”)
Exit
Endif
next
9、
inti
inti1,i2,i3
ints
i1=0
i2=1
s=i1+i2
forI=3to20
i3=i1+i2
s=s+i3
i1=i2
i2=i3
next