图像声音数字视频是多媒体的基本要素目前多媒体数据库正得到是益广泛的应用例如桂林市开通的交互式有线电视实时点歌系统即人们可以用电话机的按键点歌并且同时在电视上看到自己正在操纵的菜单选中歌曲后电视立即自动播放MTV不需旁人帮助这是网络多媒体数据库的具体应用 用PowerBuilder开发应用程序时您完全可以把多媒体数据集成到应用程序中使您的应用程序具备多媒体录制查询播放等众多功能显然多媒体将进一步提高应用程序的层次并且给用户一种身临其境的感觉
怎样用PowerBuilder创建并展示多媒体数据库呢?它可分为两部分
怎样将图象声音动画存入数据库
查询系统的制作
下面以PowerBuilder和SQL Anywhere为例让我们快速制作一个简单的查询系统制作婚姻介绍系统查询到符合条件的人后显示该人的人事档案卡上有个人的照片要求双击个人照片能调用Acdsee展示该照片(顾客能任意放大缩小欣赏照片)或者双击该个人档案某处放映一段该个人档案的个人生活录相个人喜欢的音乐等
一怎样将图象声音动画存入数据库
首先要有一个包含Blob数据类型的表然后利用Bb数据窗口的OLE database Blob(OLE数据库二进制大对象)可以轻易地把图片等多媒体数据存入数据库或展示在屏幕上
步骤如下
建立一个表aaa内含两个字段记录号和相片一个字段取名为ID另一个字段名为Pic类型分别为char和Long binaryID为主键具体操作步骤为进入Database画笔来建立此表ID字段取type 为char不许为空即Null为NoPic字段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
建立一个新的应用程序具体操作步骤为按Application图标再按New图标文件名填test按保存Application填test按OK出现一Would you like……的对话框问是否要应用程序模板按是为简化制作步骤要模板
建立数据窗口并准备输入数据步骤为按DataWindow图标在Select datawindow对话框中选New在New Datawindow对话框中选SQL Slect和Freeform即SQL 选择的数据源自由格式的风格按OK在Select talbe对话框中选中aaa表按Open点选ID列使ID出现在Select list的右边在窗口下方按Where按钮按Colume并在Cloume的下拉条中选中aaaid在Valua的一栏中填入 :temp注意这里的temp前面有一冒号按窗口上方的Desion菜单选Retriveal Arguments在Name一栏填temp注意这里的temp前面没有冒号type一栏选String(注意)按OK
规定SQL语句可以嵌入到PowerScript语言当中只不过每一个SQL语句必须以分号结尾而且在SQL语句中如果要引用PowerScript变量则必须对这些变量赋予一个前缀冒号而PowerScript语句的变量不要加冒号注意区分
用数据窗口的预览方式输入数据具体操作步骤为按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的值填点Insert Row 图标在表中添加一行填入id后双击方框打开画图程序这时可以通过绘制复制等手段制作图片制作好后单击文件菜单中的退出并返回到…关闭画图程序再次单击预鑒图标系统提示save……将数据窗口取名为aaa选择是将结果保存到表中
同理若想将动画存入数据库则另加一字段将音乐存入数据库则另加一字段
二 查询系统的制作
制作从键盘输入记录号可查询到该人的档案记录
①制作查询窗口步骤为鼠标点按Window图标新建一窗口在窗口中添加一个DataWindow控件在DataWindow控件上按鼠标右键选择并单击Properties快捷菜单项在在Datawindow object name旁按Browse按钮选择装入前面制作的aaa数据窗口调整好窗口的大小再在窗口上放一SingleLineEdit控件和一CommandButton按钮控件点中按钮控件并按右键选择Properties 将其显示文本修改为查询按钮名称仍为cb_点中按钮控件并按右键选择Script…输入以下脚本
dw_settransobject(sqlca)
dw_retrieve(sle_text)
关闭并保存按Save图标保存该窗口窗口取名为aaa
②将查询窗口连接入test应用程序内点按Application图标出现test应用程序双击test出现名为w_genapp_frame的窗口图标这是应用程序为我们提供的主窗口的名字点按w_genapp_frame不放按右键选edit出现该主窗口将一按钮控件放入该窗口按钮显示的文本可改为唯一查询也可省略不改点中该按钮控件并按右键选择Script…输入open(aaa)保存点按Application图标再按script图标出现应用程序的自动生成的主体脚本部分内容如下它的任务是将数据库初始化相当于winini假若不要应用程序的模板则下面的脚本需自己输入而使用模板后现在我们只需将//connect前面的注释号//符号删除即可除省事外还避免了因为排版引起的下面的程序格式错误(本人经常因为书中个别字母印刷错或排版引起的程序格式错误造成程序无法运行而痛心不已)
sqlcaDBMS = ProfileString (ls_startupfile database dbms )
sqlcadatabase = ProfileString (ls_startupfile database database )
sqlcauserid = ProfileString (ls_startupfile database userid )
sqlcadbpass = ProfileString (ls_startupfile database dbpass )
sqlcalogid = ProfileString (ls_startupfile database logid )
sqlcalogpass = ProfileString (ls_startupfile database LogPassWord )
sqlcaservername = ProfileString (ls_startupfile database servername )
sqlcadbparm = ProfileString (ls_startupfile database dbparm )
connect;
现在按Run图标运行该程序结果如下图为简化程序我们只加入了多媒体中的图片字段成功后读者可自已增加动画声音字段
讨论假若多媒体的字段和数据个数比较少也可用变量和函数来解决如
temp=temp+bmp
p_picturename=temp
ole_insertfile(sampleavi)
run(c:\acdseeexe c:\aabmpnormal!)
这些都是很有用的函数但数据多而杂时它们就会显得力不从心了因为使用它们时多媒体数据并没有内置于数据库之中也就是说数据库内并没有它们的字段想想看假若数据库的所有字段都用变量来代替的话会怎么样