怎样用PowerBuilder创建并展示多媒体数据库呢?它可分为两部分:
1. 怎样将图象、声音、动画存入数据库
2. 查询系统制作.
下面以PowerBuilder6.5和SQL Anywhere为例让我们快速制作个简单查询系统制作婚姻介绍系统查询到符合条件人后显示该人人事档案卡上有个人照片要求双击个人照片能Acdsee展示该照片(顾客能任意放大、缩小欣赏照片);或者双击该个人档案某处放映段该个人档案个人生活录相个人喜欢音乐等.
.怎样将图象、声音、动画存入数据库
首先要有个包含Blob数据类型表然后利用Bb数据窗口"OLE database Blob"(OLE数据库 2进制大对象)可以轻易地把图片等多媒体数据存入数据库或展示在屏幕上
步骤如下:
1.建立个表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
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选择"是"将结果保存到表中
同理:若想将动画存入数据库则另加字段将音乐存入数据库则另加字段
2. 查询系统制作
1. 制作从键盘输入记录号可查询到该人档案记录
①制作查询窗口步骤为:鼠标点按Window图标新建窗口在窗口中添加个DataWindowControl控件在DataWindowControl控件上按鼠标右键选择并单击Properties快捷菜单项在在Datawindow object name旁按Browse按钮选择装入前面制作aaa数据窗口调整好窗口大小再在窗口上放SingleLineEditControl控件和CommandButton按钮Control控件点中按钮Control控件并按右键选择Properties 将其显示文本修改为"查询"按钮名称仍为cb_1点中按钮Control控件并按右键选择Script…输入以下脚本
dw_1.transobject(sqlca)
dw_1.retrieve(sle_1.text)
关闭并保存按Save图标保存该窗口窗口取名为aaa
②将查询窗口连接入test应用内点按Application图标出现test应用双击test出现名为w_genapp_frame窗口图标这是应用为我们提供主窗口名字点按w_genapp_frame不放按右键选edit出现该主窗口将按钮Control控件放入该窗口按钮显示文本可改为"唯查询"也可省略不改点中该按钮Control控件并按右键选择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!)
这些都是很有用但数据多而杂时它们就会显得力不从心了使用它们时多媒体数据并没有内置于数据库的中也就是说数据库内并没有它们字段想想看假若数据库所有字段都用变量来代替话我想任何人看了都会头大!
最新评论