)首先,在數據庫中建立壹個具有以下結構的表blobsave。
字段名?數據類型備註
id char()?主鍵索引
s_path char()
pic?二進制( )
)建立PBl庫blob在PB中保存PBl
)在PBl庫中建立並應用blob save blob save PBl。
在應用程序的open事件中設置壹個數據庫連接程序(這個程序中使用odbc連接數據庫。讀者可以根據自己建立的數據庫不同,選擇不同的連接方式。以下用於連接數據庫的代碼也已更改。至於不同數據庫的連接方法,請參考相關資料。本文就不詳細介紹了)
SQLCA DBMS = ODBC SQLCA auto commit = False SQLCA db parm = connect string = DSN = blob connect open(w _ main)
單擊的命令按鈕cb_path中的代碼格式如下:open(w_path)。
單擊的命令按鈕cb_dbblob中的代碼格式如下:open(w_dbblob)。
單擊的命令按鈕cb_OLEblob中的代碼格式如下:open(w_OLEblob)。
)建立壹個數據窗口dw_blobsave。
根據以上建立編號?數據窗口dw_blobsave是通過lob列的方法建立的,如圖。
其中添加刪除保存取消檢索等分別是數據窗口dw_blobsave的追加行刪除行更新檢索的動作按鈕。
首先,創建實例變量OLEstorage stor。
然後構建如圖所示的窗口w_path,其中數據窗口控件dw_的rowfocuschanged中的代碼如下。
long row _ num row _ num = dw _ getrow()if row _ num & gt;然後ole _ insert file(dw _ object s _ path[row _ num])end if
其中,數據窗口dw_的buttonclicked中的代碼如下
如果dwo name = CB select那麽long row _ num row _ num = dw _ getrow()string文件路徑文件名getfileopenname(請選擇註意文件文件路徑文件名)dw _ objects _ path [row _ num] =文件路徑ole _ insert file(文件路徑)end if。
保存窗口w_path
)構建窗口w_dbblob。
打開w_path,保存為w_dbblob,將rowfocuschanged數據窗口dw_中的代碼修改如下。
blob文本long row _ num row _ num = dw _ getrow()if row _ num & gt;然後string id id = dw _ object id[row _ num]sqlca automit = true select blob pic into:text from blob save where id =:id ole _ object data = text sqlca automit = false end if
點擊按鈕改變數據窗口dw_中的代碼如下
long row _ num if dwo name = CB select then row _ num = dw _ getrow()string file path filename getfile openname dw _ objects _ path[ro]W _ num]= file path ole _ insert file(file path)end if if dwo name = CB save then string id sqlca automit = true blob text text = ole _ object data dw _ update()MIT ro W _ num = dw _ getrow()id = dw _ object id[row _ num] updateblob blob存儲集pic =: text其中id =:id MIT sqlca automit = false dw _ retrieve()dw _ scroll row(row _ num)end if存儲窗口w_dbblob。
)構建窗口w_OLEblob。
打開w_path,保存為w_OLEblob。在窗口w_OLEblob的open事件中編寫以下代碼。
stor = create ole storage stor Open(c:\ p ole)//打開或創建壹個ole文件,並在窗口w_OLEblob的close事件中編寫以下代碼:destroy stor。
將數據窗口dw_的rowfocuschanged中的代碼更改如下
blob文本long row _ num row _ num = dw _ getrow()if row _ num & gt;那麽string id id = dw _ object id[row _ num]ole _ open(stor w+id)end if
點擊按鈕改變數據窗口dw_中的代碼如下
long row _ num if dwo name = CB select then row _ num = dw _ getrow()string file path filename getfile openname dw _ objects _ path[ro]w _ num]= file path ole _ insert file(file path)end if dwo name = CB save then string id row _ num = dw _ getrow()id = dw _ object id[row _ num]ole _ save as(stor w+id)stor save()end if
保存窗口w_OLEblob並運行應用程序。
三種方法的優缺點
方法1:文件存儲在數據庫中的固定路徑。訪問文件路徑和名稱可以節省數據空間,避免數據庫過度擴展。但是,notes文件必須在某個目錄下,且同壹目錄下的文件不能重命名,這給文件管理帶來了壹定的困難。另外,在OLE控件中瀏覽和顯示notes文件時,由於每次都調用服務器程序,所以速度較慢。
第二種方法是將memo文件存儲在帶有blob類型或varbinary類型字段的數據庫中。當文件存儲在數據庫中時,硬盤上的原始臨時文件可以被刪除。不需要復雜的二進制文件管理,數據庫可以存儲在網絡服務器上,數據共享非常方便。
Lishi Xinzhi/Article/program/SQL/201311/16227