用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!)

  这些都是很有用的函数,但数据多而杂时,它们就会显得力不从心了,因为使用它们时,多媒体数据并没有内置于数据库之中,也就是说数据库内并没有它们的字段,想想看,假若数据库的所有字段都用变量来代替的话,我想任何人看了都会头大!

用PB开发多媒体数据库管理系统相关推荐

  1. c语言vs开发小型数据库,用C语言开发小型数据库管理系统代码

    注意是代码 #include #include typedef struct count{ /*保存记录条数结构体*/ char name[10]; int num; }count; typedef ...

  2. 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档)

    计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S ...

  3. 【数据库实验】《小型MIS的开发》PyQt5 开发 民航票务管理系统

    PyQt5 开发 民航票务管理系统 为什么要拿 Python 做呢? 学习一天的知识点 开发环境 与 项目整体结构 数据库建表 用户表的 SQL 航班信息表的 SQL 界面代码 主界面:hello.p ...

  4. 【数据库实验】《小型MIS的开发》— JavaFx 开发 民航票务管理系统

    <小型MIS的开发> 需求描述 数据库建表 用户表的 SQL 航班信息表的 SQL 项目演示 GitHub 网址获取源代码 比较重要的知识点 JavaFx 中 spring 工厂如何创建 ...

  5. JSP危险化学品管理系统myeclipse开发mysql数据库bs框架java编程jdbc详细设计

    一.源码特点      JSP危险化学品管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8. ...

  6. 浙江师范大学实验室开放项目《应用水晶报表快速开发数据库管理系统》学生名单登记表(给学分名单)

    浙江师范大学实验室开放项目学生名单登记表 项目名称 应用水晶报表快速开发数据库管理系统 所在实验室 公共基础实验室 实验类型 □综合设计  □科学研究  □自拟课题  □计算机应用  □人文素质 指导 ...

  7. JSP房地产门户管理系统myeclipse开发mysql数据库BS模式java编程网页结构详细设计

    一.源码特点      JSP 房地产门户管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8 ...

  8. JSP水电费管理系统myeclipse开发mysql数据库web结构java编程

    一.源码特点   JSP水电费管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. 下载地址: JSP水电费管理系 ...

  9. JSP项目进度管理系统myeclipse开发sql数据库BS模式java编程网页结构

    一.源码特点      JSP 项目进度管理系统是一套完善的WEB设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为TOMCAT7 ...

最新文章

  1. Qt中的QMap和QHash
  2. 如何查看 SAP Fiori Elements List Report Table 都支持哪些设置
  3. Android 音视频深入 四 录视频MP4(附源码下载)
  4. window.onload与$(document).ready()的区别
  5. 计算机是如何启动的?从未上电到操作系统启动
  6. mysql boolean 和bool_关于 MySQL 的 boolean 和 tinyint(1)
  7. vue无法监听对象的属性的增加和删除
  8. 《黑客秘笈——渗透测试实用指南(第2版)》—第1章1.6学习
  9. Windows Phone 开发【MSDN参考文档 目录】
  10. 【PDF直接下载】6G总体愿景与潜在关键技术白皮书
  11. 「上海院子」打造不可复制的国宅风华
  12. 力扣刷题 DAY_75 贪心
  13. 通知器(Notifier)
  14. 几款我比较满意的在线脑图工具
  15. Android 10 和Android 11 适配采坑 实践篇
  16. Installation of packages ‘stringi’ had non-zero exit status
  17. linux切换独显,Ubuntu 16.04如何切换Intel集显与Nvidia独显
  18. android开发(43) 动画演示,会跑的小人,从屏幕左侧跑到右侧
  19. 元宇宙密室逃脱游戏攻略来啦!
  20. Python+Selenium 实现新理念外语网络教学平台 自动答英语听力 -- 山东科技大学

热门文章

  1. R5F1006CASP#X0 16位微控制器MCU RL78 / G13 MCU低功耗 通用应用RENESAS
  2. 3d pool ball android,Ball Pool 3D
  3. 基于XNA 3.1 的2D塔防游戏——守卫家园
  4. LUA Glider,最好的LUA IDE,没有之一
  5. Excel单列内容分多列
  6. 贴吧用户发帖总数php,GitHub - cw1997/Tieba-Posting-Frequency: 百度贴吧发帖频率统计以及贴吧帖子热门关键词统计...
  7. 使用递归打印斐波那契数列
  8. Unity中的灯光和渲染
  9. 2005是网游商最尴尬一年 涉赌投诉意外死亡
  10. 【活动】腾讯云轻量应用服务器两周年庆 老用户专属续费折扣 新老同享新购福利