用PB開發(fā)多媒體數(shù)據(jù)庫(kù)管理系統(tǒng)
發(fā)表時(shí)間:2024-01-13 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]圖像、聲音、數(shù)字視頻是多媒體的基本要素,目前多媒體數(shù)據(jù)庫(kù)正得到是益廣泛的應(yīng)用。例如:桂林市開通的交互式有線電視實(shí)時(shí)點(diǎn)歌系統(tǒng),即人們可以用電話機(jī)的按鍵點(diǎn)歌,并且同時(shí)在電視上看到自己正在操縱的菜單,選中歌曲后電視立即自動(dòng)播放MTV,不需旁人幫助,這是網(wǎng)絡(luò)多媒體數(shù)據(jù)庫(kù)的具體應(yīng)用。 用PowerBuild...
圖像、聲音、數(shù)字視頻是多媒體的基本要素,目前多媒體數(shù)據(jù)庫(kù)正得到是益廣泛的應(yīng)用。例如:桂林市開通的交互式有線電視實(shí)時(shí)點(diǎn)歌系統(tǒng),即人們可以用電話機(jī)的按鍵點(diǎn)歌,并且同時(shí)在電視上看到自己正在操縱的菜單,選中歌曲后電視立即自動(dòng)播放MTV,不需旁人幫助,這是網(wǎng)絡(luò)多媒體數(shù)據(jù)庫(kù)的具體應(yīng)用。 用PowerBuilder開發(fā)應(yīng)用程序時(shí),您完全可以把多媒體數(shù)據(jù)集成到應(yīng)用程序中,使您的應(yīng)用程序具備多媒體錄制,查詢播放等眾多功能。顯然,多媒體將進(jìn)一步提高應(yīng)用程序的層次,并且給用戶一種身臨其境的感覺。
怎樣用PowerBuilder創(chuàng)建并展示多媒體數(shù)據(jù)庫(kù)呢?它可分為兩部分:
1. 怎樣將圖象、聲音、動(dòng)畫存入數(shù)據(jù)庫(kù)
2. 查詢系統(tǒng)的制作.
下面以PowerBuilder6.5和SQL Anywhere為例。讓我們快速制作一個(gè)簡(jiǎn)單的查詢系統(tǒng)。制作婚姻介紹系統(tǒng),查詢到符合條件的人后,顯示該人的人事檔案卡上有個(gè)人的照片,要求雙擊個(gè)人照片,能調(diào)用Acdsee展示該照片(顧客能任意放大、縮小欣賞照片);或者雙擊該個(gè)人檔案某處放映一段該個(gè)人檔案的個(gè)人生活錄相,個(gè)人喜歡的音樂等.
一.怎樣將圖象、聲音、動(dòng)畫存入數(shù)據(jù)庫(kù)
首先要有一個(gè)包含Blob數(shù)據(jù)類型的表,,然后利用Bb數(shù)據(jù)窗口的"OLE database Blob"(OLE數(shù)據(jù)庫(kù)二進(jìn)制大對(duì)象),可以輕易地把圖片等多媒體數(shù)據(jù)存入數(shù)據(jù)庫(kù)或展示在屏幕上。
步驟如下:
1.建立一個(gè)表aaa,內(nèi)含兩個(gè)字段,記錄號(hào)和相片,一個(gè)字段取名為ID,另一個(gè)字段名為Pic,類型分別為char和Long binary,ID為主鍵。具體操作步驟為:進(jìn)入Database畫筆來建立此表,ID字段取type 為char,不許為空,即Null為No,Pic字段type為L(zhǎng)ong binary,可為空,即Null為Yes(重要)。將英文標(biāo)題頭改成中文,即將id字段的Header內(nèi)的"id"改為"記錄號(hào)",Label的內(nèi)容改為"記錄號(hào):",同理將pic字段的改為"相片"和"相片:"按Close圖標(biāo),保存的文件名填aaa,按Table Properties圖標(biāo),按Primary key,并點(diǎn)選ID為主鍵,按Close圖標(biāo)關(guān)閉Database畫筆。
注意:在這一步驟里不要輸入數(shù)據(jù),而要在后面的數(shù)據(jù)窗口里,按預(yù)覽圖標(biāo)輸入數(shù)據(jù)。
Pic字段的數(shù)據(jù)類型即所謂Blob類型,其數(shù)據(jù)類型在不同的DBMS中有一定的差別:在SQL Anywhere 中是Long binary;在SQL Server中是Image。
2.建立一個(gè)新的應(yīng)用程序。具體操作步驟為:按Application圖標(biāo),再按New圖標(biāo),文件名填test,按保存,Application填test,按OK,出現(xiàn)一"Would you like……"的對(duì)話框,問是否要應(yīng)用程序模板,按"是",為簡(jiǎn)化制作步驟,要模板。
3.建立數(shù)據(jù)窗口并準(zhǔn)備輸入數(shù)據(jù)。步驟為:按DataWindow圖標(biāo),在"Select datawindow"對(duì)話框中選New,在New Datawindow對(duì)話框中選SQL Slect和Freeform,即SQL 選擇的數(shù)據(jù)源,自由格式的風(fēng)格。按OK,在Select talbe對(duì)話框中選中aaa表,按Open。點(diǎn)選ID列,使ID出現(xiàn)在Select list的右邊,在窗口下方按Where按鈕,按Colume,并在Cloume的下拉條中選中"aaa"."id",在Valua的一欄中填入 :temp,注意,這里的temp前面有一冒號(hào) 按窗口上方的Desion菜單,選Retriveal Arguments,在Name一欄填temp,注意,這里的temp前面沒有冒號(hào),type一欄選String(注意),按OK。
規(guī)定:SQL語句可以嵌入到PowerScript語言當(dāng)中,只不過每一個(gè)SQL語句必須以分號(hào)結(jié)尾,而且在SQL語句中如果要引用PowerScript變量,則必須對(duì)這些變量賦予一個(gè)前綴--冒號(hào):而PowerScript語句的變量不要加冒號(hào),注意區(qū)分。
4.用數(shù)據(jù)窗口的預(yù)覽方式輸入數(shù)據(jù)。具體操作步驟為:按Desion菜單,選Data Source使Data Source前面不打鉤,從Objects菜單中選擇OLE Database Blob項(xiàng),然后在設(shè)計(jì)窗口中適當(dāng)位置點(diǎn)鼠標(biāo)左鍵,此時(shí)出現(xiàn)Database Blob object對(duì)話框。逐漸填寫對(duì)話窗:
ClientClass:填入DataWindow,可選。
ClientName:填入當(dāng)前DataWindow的名字,可選。
Table:選擇aaa表。
Large Binary/Text Columns:選擇pic字段。
KeyClause:選id=:id,用于構(gòu)造where子句,即where id=:id,用于定位相位記錄。
File template:瀏覽選擇并填入一個(gè)bmp文件,可不填。
OLE Class:通過下拉菜單選擇Pbrush畫筆程序。
Client Name Expression:填入某一字符串表達(dá)式,當(dāng)OLEServer運(yùn)行時(shí),顯示在其標(biāo)題處,如填寫入id+".bmp",按OK鍵。
單擊Positions標(biāo)簽,選中"Resizable",單擊General標(biāo)簽,在Border列表框中選擇"Resize"如此選擇這兩個(gè)屬性后,程序運(yùn)行時(shí),用戶能夠通過拖拽改變圖片的大小,單擊OK關(guān)閉對(duì)話框。
此時(shí),PB關(guān)閉該對(duì)話窗,并回到DataWindow的設(shè)計(jì)窗口,OLE字段以一小方框的形式顯示出來。
單擊Preview預(yù)覽圖標(biāo),在跳出的對(duì)話框中給temp的值填1,點(diǎn)Insert Row 圖標(biāo),在表中添加一行,填入id后,雙擊方框,打開畫圖程序,這時(shí)可以通過繪制,復(fù)制等手段制作圖片,制作好后,單擊文件菜單中的"退出并返回到…"關(guān)閉畫圖程序,再次單擊預(yù)鑒圖標(biāo),系統(tǒng)提示"save……",將數(shù)據(jù)窗口取名為aaa,選擇"是"將結(jié)果保存到表中。
同理:若想將動(dòng)畫存入數(shù)據(jù)庫(kù)則另加一字段,將音樂存入數(shù)據(jù)庫(kù)則另加一字段。
二. 查詢系統(tǒng)的制作
1. 制作從鍵盤輸入記錄號(hào),可查詢到該人的檔案記錄。
①制作查詢窗口。步驟為:鼠標(biāo)點(diǎn)按Window圖標(biāo),新建一窗口,在窗口中,添加一個(gè)DataWindow控件,在DataWindow控件上按鼠標(biāo)右鍵,選擇并單擊Properties快捷菜單項(xiàng),在在Datawindow object name旁按Browse按鈕,選擇裝入前面制作的aaa數(shù)據(jù)窗口,調(diào)整好窗口的大小,再在窗口上放一SingleLineEdit控件,和一CommandButton按鈕控件,點(diǎn)中按鈕控件并按右鍵選擇Properties ,將其顯示文本修改為"查詢",按鈕名稱仍為cb_1,點(diǎn)中按鈕控件并按右鍵選擇Script…,輸入以下腳本
dw_1.settransobject(sqlca)
dw_1.retrieve(sle_1.text)
關(guān)閉并保存,按Save圖標(biāo)保存該窗口,窗口取名為aaa,
、趯⒉樵兇翱谶B接入test應(yīng)用程序內(nèi)。點(diǎn)按Application圖標(biāo),出現(xiàn)test應(yīng)用程序,雙擊test,出現(xiàn)名為w_genapp_frame的窗口圖標(biāo),這是應(yīng)用程序?yàn)槲覀兲峁┑闹鞔翱诘拿,點(diǎn)按w_genapp_frame不放按右鍵選edit,出現(xiàn)該主窗口,將一按鈕控件放入該窗口,按鈕顯示的文本可改為"唯一查詢",也可省略不改,點(diǎn)中該按鈕控件并按右鍵選擇Script…,輸入:open(aaa),保存。點(diǎn)按Application圖標(biāo),再按script圖標(biāo),出現(xiàn)應(yīng)用程序的自動(dòng)生成的主體腳本,部分內(nèi)容如下,它的任務(wù)是將數(shù)據(jù)庫(kù)初始化,相當(dāng)于win.ini。假若不要應(yīng)用程序的模板,則下面的腳本需自己輸入。而使用模板后,現(xiàn)在我們只需將//connect;前面的注釋號(hào)"http://"符號(hào)刪除即可。除省事外還避免了因?yàn)榕虐嬉鸬南旅娴某绦蚋袷藉e(cuò)誤。(本人經(jīng)常因?yàn)闀袀(gè)別字母印刷錯(cuò),或排版引起的程序格式錯(cuò)誤造成程序無法運(yùn)行而痛心不已。)
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;
現(xiàn)在按Run圖標(biāo)運(yùn)行該程序,結(jié)果如下圖。為簡(jiǎn)化程序,我們只加入了多媒體中的圖片字段,成功后,讀者可自已增加動(dòng)畫,聲音字段。
討論:假若多媒體的字段和數(shù)據(jù)個(gè)數(shù)比較少,也可用變量和函數(shù)來解決。如:
temp2=temp+".bmp"
p_1.picturename=temp2
ole_1.insertfile("sample.avi")
run("c:acdsee.exe c:aa.bmp",normal!)
這些都是很有用的函數(shù),但數(shù)據(jù)多而雜時(shí),它們就會(huì)顯得力不從心了,因?yàn)槭褂盟鼈儠r(shí),多媒體數(shù)據(jù)并沒有內(nèi)置于數(shù)據(jù)庫(kù)之中,也就是說數(shù)據(jù)庫(kù)內(nèi)并沒有它們的字段,想想看,假若數(shù)據(jù)庫(kù)的所有字段都用變量來代替的話,我想任何人看了都會(huì)頭大!