如何將多媒體文件儲(chǔ)存至SQLServer

字號(hào):

背景
    SQL Server提供一個(gè)Image的資料型別,允許使用者把binary的資料可以存放在Table內(nèi),舉凡聲音、影像等,都可以很便利的來(lái)透過(guò)資料庫(kù)來(lái)維護(hù),因此建立一個(gè)Client/Server級(jí)的影像資料庫(kù)并非難事。
    VFP也提供一個(gè)General型別的欄位,能夠讓我們把OLE的資料儲(chǔ)存至VFP的Table內(nèi),由於VFP是的前端開(kāi)發(fā)工具之一,所以如果您走的是Client/Server架構(gòu)的話,很可能您會(huì)把屬於影音的資料,全部放在後端,而由VFP在需要時(shí),才予以讀取,減少網(wǎng)路上的傳輸。
    技術(shù)說(shuō)明
    有關(guān)於VFP如何透過(guò)ODBC與SQL Server上的資料庫(kù)連結(jié),飛狐博士假設(shè)您都已經(jīng)了解,在此不再贅述。
    要把binary資料經(jīng)由VFP 儲(chǔ)存至後端的SQL Server,您需要先在VFP中利用General欄位來(lái)儲(chǔ)存您的影音資料,然後利用SQL Pass Through的方式,執(zhí)行SQL Server的INSERT INTO 的指令來(lái)完成。但最重要的技巧在於,您不能直接把影音檔的檔名直接傳給SQL Server,因?yàn)镾QL Server根本無(wú)法去辨識(shí)格式,您必須利用VFP中的General欄位,把資料送至後端,因?yàn)檫@是SQL Server與前端約定的資料傳輸方式。以下舉例說(shuō)明:
    在後端的SQL Server上有一個(gè)人事資料檔,檔名為 employee,這個(gè)檔有3個(gè)欄位:
    欄位名稱
    資料型別
    說(shuō)明
    emp_id
    int
    員工編號(hào)
    name
    char(10)
    員工姓名
    photo
    image
    員工相片
    而在前端有一個(gè)VFP的 TABLE,檔名為vfp_table,其中有一個(gè)欄位名稱為general_fld, 型別為 General。
    示例
    nSql_Handle = SQLConnect( 厎. )
    =SQLEXEC( nSql_Handle , " INSERT INTO employee( emp_id , emp_name , photo ) VALUES( '003' , '飛狐博士' , ?vfp_table.general_fld)" )
    請(qǐng)讀者注意筆者是如何把general_fld的內(nèi)容當(dāng)做參數(shù)傳送給SQL Server:
    ?vfp_table.general_fld
    這就是本期的秘技,請(qǐng)會(huì)員們務(wù)必牢記。
    如何把 .WAV檔放入VFP的TABLE中
    如果希望利用暫存檔來(lái)存放 .WAV或.GIF的資料,請(qǐng)利用下利的技巧:
    CREATE CURSOR temp_ole ( g_fld G) && 建立一個(gè)具有General欄位的cursor
    APPEND BLANK
    APPEND GENERAL g_fld FROM "C:\Windows95\media\mypic.gif"