一、首先要寫好兩個函式,分別是檔案的讀取與寫入:
參考 pb中讀寫檔案的函式:
二、儲存檔案
li_value = getfileopenname("選擇檔案",ls_docname,ls_named)
if li_value = 1 then
if f_readfile(lb_fj,ls_docname)=1 then
ll_picid=gf_getid('t_picture') //這是乙個得到新增id的函式
//需要先插入這條資料的其他資訊
insert into t_svt_picture ( pictureid,picname,detaillogid )
values ( :ll_picid,:ls_named, :ld_detaillogid);
if sqlca.sqlcode<0 then
rollback;
messagebox('系統提示','資料儲存失敗')
return
end if
//再用updateblob更新blob欄位
updateblob t_picture set picblob=:lb_fj where pictureid=:ll_picid;
if sqlca.sqlcode<0 then
rollback;
messagebox('系統提示','儲存失敗')
return
else
commit;
end if
end if
end if
三、開啟檔案
//用selectblob將blob型別資料賦值給blob變數 lb_fj
selectblob picblob into :lb_fj from t_picture where pictureid=:ll_picid;
if sqlca.sqlcode<>0 then
messagebox('系統提示','資料讀取失敗')
return
end if
//需要將檔案重新在磁碟裡儲存出來,需要在之前存資料庫是記錄檔名 dw_1.object.picname
ls_docname='c:/worktemp'
if not directoryexists(ls_docname) then createdirectory(ls_docname)
ls_docname=ls_docname+dw_1.object.picname[row]
if f_writefile(lb_fj,ls_docname)=1 then
//呼叫api開啟檔案
if shellexecutea(handle(parent),ls_null,ls_docname,ls_null,ls_null, 1) > 32 then
return
else
messagebox('系統提示','系統開啟檔案出錯')
return
end if
end if
//api定義
function long shellexecutea (ulong hwnd, string lpoperation, string lpfile,string lpparameters, string lpdirectory, long nshowcmd) library "shell32.dll"
資料庫中的blob是什麼型別?
blob binary large object 二進位製大物件,是乙個可以儲存二進位制檔案的容器。在計算機中,blob常常是資料庫中用來儲存二進位制檔案的字段型別。根據eric raymond的說法,處理blob的主要思想就是讓檔案處理器 如資料庫管理器 不去理會檔案是什麼,而是關心如何去處理它。...
sqllite 資料庫 blob型別 問題小結
今天在使用sqllite的過程中遇到乙個問題,資料庫中的乙個字段怎麼也顯示不出來,經排查後發現 原來是字段型別搞錯了,將blob型別設定成了text型別,用視覺化操作軟體直接修改後依然無法顯示,很費解。經過查詢資料後發現是因為sqllite資料庫在字段型別問題,sqllite 是弱型別的資料庫,sq...
blob資料型別 資料庫資料型別和基礎操作
資料庫是 按照資料結構來組織 儲存和管理資料的倉庫 是乙個長期儲存在計算機內的 有組織的 可共享的 統一管理的大量資料的集合。它並不是隨意儲存的,儲存資料是有規則的,要不查詢效率會很低,除了文字型別 整數型別還有像能儲存影象 聲音這樣二進位制資料的blob型別。資料庫型別 資料表字段型別 常見字段種...