那些年踩过的坑

记录那些踩过的坑,以防再踩

用PB开发多媒体数据库管理系统

用PB开发多媒体数据库管理系统

(加入日期:2001-6-9)

保存文章至硬盘】【打印文章】【字体:

分享到: 0
图像、声音、数字视频是多媒体的基本要素,目前多媒体数据库正得到是益广泛的应用。例如:桂林市开通的交互式有线电视实时点歌系统,即人们可以用电话机的按键点歌,并且同时在电视上看到自己正在操纵的菜单,选中歌曲后电视立即自动播放MTV,不需旁人帮助,这是网络多媒体数据库的具体应用。用PowerBuilder开发应用程序时,您完全可以把多媒体数据集成到应用程序中,使您的应用程序具备多媒体录制,查询播放等众多功能。显然,多媒体将进一步提高应用程序的层次,并且给用户一种身临其境的感觉。

  怎样用PowerBuilder创建并展示多媒体数据库呢?它可分为两部分:

  1. 怎样将图象、声音、动画存入数据库

  2. 查询系统的制作.  

  下面以PowerBuilder6.5和SQL Anywhere为例。让我们快速制作一个简单的查询系统。制作婚姻介绍系统,查询到符合条件的人后,显示该人的人事档案卡上有个人的照片,要求双击个人照片,能调用Acdsee展示该照片(顾客能任意放大、缩小欣赏照片);或者双击该个人档案某处放映一段该个人档案的个人生活录相,个人喜欢的音乐等.

  一.怎样将图象、声音、动画存入数据库

  首先要有一个包含Blob数据类型的表,,然后利用Bb数据窗口的"OLE database Blob"(OLE数据库二进制大对象),可以轻易地把图片等多媒体数据存入数据库或展示在屏幕上。

  步骤如下:

  1.建立一个表aaa,内含两个字段,记录号和相片,一个字段取名为ID,另一个字段名为Pic,类型分别为char和Long binary,ID为主键。具体操作步骤为:进入Database画笔来建立此表,ID字段取type 为char,不许为空,即Null为No,Pic字段type为Long binary,可为空,即Null为Yes(重要)。将英文标题头改成中文,即将id字段的Header内的"id"改为"记录号",Label的内容改为"记录号:",同理将pic字段的改为"相片"和"相片:"按Close图标,保存的文件名填aaa,按Table Properties图标,按Primary key,并点选ID为主键,按Close图标关闭Database画笔。

  注意:在这一步骤里不要输入数据,而要在后面的数据窗口里,按预览图标输入数据。

  Pic字段的数据类型即所谓Blob类型,其数据类型在不同的DBMS中有一定的差别:在SQL Anywhere 中是Long binary;在SQL Server中是Image。

  2.建立一个新的应用程序。具体操作步骤为:按Application图标,再按New图标,文件名填test,按保存,Application填test,按OK,出现一"Would you like……"的对话框,问是否要应用程序模板,按"是",为简化制作步骤,要模板。

  3.建立数据窗口并准备输入数据。步骤为:按DataWindow图标,在"Select datawindow"对话框中选New,在New Datawindow对话框中选SQL Slect和Freeform,即SQL 选择的数据源,自由格式的风格。按OK,在Select talbe对话框中选中aaa表,按Open。点选ID列,使ID出现在Select list的右边,在窗口下方按Where按钮,按Colume,并在Cloume的下拉条中选中"aaa"."id",在Valua的一栏中填入 :temp,注意,这里的temp前面有一冒号 按窗口上方的Desion菜单,选Retriveal Arguments,在Name一栏填temp,注意,这里的temp前面没有冒号,type一栏选String(注意),按OK。

  规定:SQL语句可以嵌入到PowerScript语言当中,只不过每一个SQL语句必须以分号结尾,而且在SQL语句中如果要引用PowerScript变量,则必须对这些变量赋予一个前缀--冒号:而PowerScript语句的变量不要加冒号,注意区分。

  4.用数据窗口的预览方式输入数据。具体操作步骤为:按Desion菜单,选Data Source使Data Source前面不打钩,从Objects菜单中选择OLE Database Blob项,然后在设计窗口中适当位置点鼠标左键,此时出现Database Blob object对话框。逐渐填写对话窗:

  ClientClass:填入DataWindow,可选。

  ClientName:填入当前DataWindow的名字,可选。

  Table:选择aaa表。

  Large Binary/Text Columns:选择pic字段。

  KeyClause:选id=:id,用于构造where子句,即where id=:id,用于定位相位记录。

  File template:浏览选择并填入一个bmp文件,可不填。

  OLE Class:通过下拉菜单选择Pbrush画笔程序。

  Client Name Expression:填入某一字符串表达式,当OLEServer运行时,显示在其标题处,如填写入id+".bmp",按OK键。

  单击Positions标签,选中"Resizable",单击General标签,在Border列表框中选择"Resize"如此选择这两个属性后,程序运行时,用户能够通过拖拽改变图片的大小,单击OK关闭对话框。

  此时,PB关闭该对话窗,并回到DataWindow的设计窗口,OLE字段以一小方框的形式显示出来。

  单击Preview预览图标,在跳出的对话框中给temp的值填1,点Insert Row 图标,在表中添加一行,填入id后,双击方框,打开画图程序,这时可以通过绘制,复制等手段制作图片,制作好后,单击文件菜单中的"退出并返回到…"关闭画图程序,再次单击预鉴图标,系统提示"save……",将数据窗口取名为aaa,选择"是"将结果保存到表中。

  同理:若想将动画存入数据库则另加一字段,将音乐存入数据库则另加一字段。

  二. 查询系统的制作

  1. 制作从键盘输入记录号,可查询到该人的档案记录。

  ①制作查询窗口。步骤为:鼠标点按Window图标,新建一窗口,在窗口中,添加一个DataWindow控件,在DataWindow控件上按鼠标右键,选择并单击Properties快捷菜单项,在在Datawindow object name旁按Browse按钮,选择装入前面制作的aaa数据窗口,调整好窗口的大小,再在窗口上放一SingleLineEdit控件,和一CommandButton按钮控件,点中按钮控件并按右键选择Properties ,将其显示文本修改为"查询",按钮名称仍为cb_1,点中按钮控件并按右键选择Script…,输入以下脚本

  dw_1.settransobject(sqlca)

  dw_1.retrieve(sle_1.text)

  关闭并保存,按Save图标保存该窗口,窗口取名为aaa,

  ②将查询窗口连接入test应用程序内。点按Application图标,出现test应用程序,双击test,出现名为w_genapp_frame的窗口图标,这是应用程序为我们提供的主窗口的名字,点按w_genapp_frame不放按右键选edit,出现该主窗口,将一按钮控件放入该窗口,按钮显示的文本可改为"唯一查询",也可省略不改,点中该按钮控件并按右键选择Script…,输入:open(aaa),保存。点按Application图标,再按script图标,出现应用程序的自动生成的主体脚本,部分内容如下,它的任务是将数据库初始化,相当于win.ini。假若不要应用程序的模板,则下面的脚本需自己输入。而使用模板后,现在我们只需将//connect;前面的注释号"//"符号删除即可。除省事外还避免了因为排版引起的下面的程序格式错误。(本人经常因为书中个别字母印刷错,或排版引起的程序格式错误造成程序无法运行而痛心不已。)

  sqlca.DBMS = ProfileString (ls_startupfile, "database", "dbms", "")

  sqlca.database = ProfileString (ls_startupfile, "database", "database", "")

  sqlca.userid = ProfileString (ls_startupfile, "database", "userid", "")

  sqlca.dbpass = ProfileString (ls_startupfile, "database", "dbpass", "")

  sqlca.logid = ProfileString (ls_startupfile, "database", "logid", "")

  sqlca.logpass = ProfileString (ls_startupfile, "database", "LogPassWord", "")

  sqlca.servername = ProfileString (ls_startupfile, "database", "servername", "")

  sqlca.dbparm = ProfileString (ls_startupfile, "database", "dbparm", "")

  connect;

  现在按Run图标运行该程序,结果如下图。为简化程序,我们只加入了多媒体中的图片字段,成功后,读者可自已增加动画,声音字段。

  讨论:假若多媒体的字段和数据个数比较少,也可用变量和函数来解决。如:

  temp2=temp+".bmp"

  p_1.picturename=temp2

  ole_1.insertfile("sample.avi")

  run("c:\acdsee.exe c:\aa.bmp",normal!)

  这些都是很有用的函数,但数据多而杂时,它们就会显得力不从心了,因为使用它们时,多媒体数据并没有内置于数据库之中,也就是说数据库内并没有它们的字段,想想看,假若数据库的所有字段都用变量来代替的话,我想任何人看了都会头大!
阅读更多
个人分类: PowerBuilder
想对作者说点什么? 我来说一句

PB实现的酒店管理系统

2008年12月16日 312KB 下载

PB医院管理系统源码

2006年10月30日 90KB 下载

服装管理系统PB代码

2017年09月02日 14.31MB 下载

PB11.5发布web页面例子

2008年11月25日 1010KB 下载

PB开发的学生成绩管理系统

2009年03月08日 298KB 下载

基于PB的小型宾馆管理系统

2009年04月24日 2.94MB 下载

存货管理系统

2011年09月09日 790KB 下载

没有更多推荐了,返回首页

不良信息举报

用PB开发多媒体数据库管理系统

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭