资源描述
用PowerBuilder开发多媒体数据库
(深圳:独孤求败 2003-05-16)
PowerBuilder(PB)作为新一代客户/服务器快速开发工具的典型代表,不仅有强大的数据库管理能力,而且在多媒体数据库的开发方面也有其独到之处。PB 4.0 以上版本提供了OLE 2.0 控件,利用此控件可以调用相应的多媒体处理程序来显示不同的信息。
在开发多媒体数据库方面有两点需要说明:
1. 多媒体数据库的建立
一般采用在数据库中直接保存多媒体信息的方法,而不是保存其文件的路径。这样可以直接从外界将多媒体信息录入数据库,而不必保存成文件。PB提供Blob类型的字段,可用来存储非格式的多媒体数据。
2. 多媒体数据的采集与检索
当在一个OLE 2.0控件中嵌入一个OLE对象时,该对象的实际数据作为一个Blob类型保存在该控件的ObjectData属性中。若想把嵌入对象存储到数据库中,则可以把它先存储在Blob变量中,然后用SQL语言的Updateblob把Blob变量存入数据库。反之亦可以用 Selectblob语句将数据库中Blob类型的多媒体信息检索出来。
下图给出了一个正在录音的多媒体档案管理系统的窗口示例。通过该窗口可以完成包括声音、图像、照片和大文本等多媒体档案资料的录入工作。以下主要针对声音媒体的录入和播放做一简要的介绍。
该窗口中,我们定义了一个OLE 2.0控件Ole_sound,设其Visable属性为False。窗口左下的一排图片按钮分别用于录放像和录放音控制,在用于录音的按钮(右二)的Clicked事件中加入如下脚本:
Ole_sound.Activate(Offsite!)
这样当用户点击该按钮时,将离席激活OLE服务器程序——Windows 95 附件中的录音机程序,可进行录音操作。
我们在窗口中加入一个命令按钮cb_Add(未显示),用于将多媒体档案录入数据库。在其Clicked事件中有关录入语音信息的语句为:
blob sd
string name
name=dw_1.getitemstring(1,“name") //获取人名信息
sd=ole_sound.objectdata //将OLE容器的声音数据保存在Blob型变量
updateblob resum2 set sound=:sd
where resum2.name=:name;//在数据表中加入该人的语音信息
对于检索时的放音,不必打开录音机对话框,而只需即席激活,相应的语句如下:
blob sd
string name
... ...
selectblob sound
into :sd
from resum2
where resum2.name=:name; //以人名为关键字检索声音数据,
if isnull(sd)<> true then //若有声音记录,
ole_sound.objectdata=sd // 则灌入OLE容器,
Ole_sound.Activate(Inplace!) // 并播放
end if
对于AVI图像的处理也是同样的道理,不再累述。
展开阅读全文