圖像聲音數字視頻是多媒體的基本要素目前多媒體數據庫正得到是益廣泛的應用例如桂林市開通的交互式有線電視實時點歌系統即人們可以用電話機的按鍵點歌並且同時在電視上看到自己正在操縱的菜單選中歌曲後電視立即自動播放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!)
這些都是很有用的函數但數據多而雜時它們就會顯得力不從心了因為使用它們時多媒體數據並沒有內置於數據庫之中也就是說數據庫內並沒有它們的字段想想看假若數據庫的所有字段都用變量來代替的話會怎麼樣
From:http://tw.wingwit.com/Article/program/SQL/201311/16214.html