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