我做的圖片存取一直都有問題,前一段太忙先放著了,現在仍然不停的出錯。
1.存盤顯示成功,卻不能提取
//保存圖片,ib_temp是之前存入picture控制元件的blob變數,長度約2000,圖片控制元件正常。
lb_photo = ib_temp
if len(lb_photo)<>0 and not isnull(lb_photo) then
updateblob t_user
set u_photo = :lb_photo
where u_id = :ls_id ;
if sqlca.sqlcode <> 0 then
messagebox("提示資訊","保存失敗",exclamation!, ok!, 1)
rollback using sqlca;
else
messagebox("提示資訊","成功保存一條資料")
commit using sqlca;
end if
setnull(ib_temp)
end if
//另一個視窗查看圖片,從資料庫里取出的blob變數長度為負數,圖片不顯示
select u_photo
into :lb_photo
from t_user
where u_name = :ls_name
using sqlca;
messagebox("",len(lb_photo))
p_1.setpicture(lb_photo)
2.要讓圖片控制元件置空,用
p_1.picturename = ""
或者
setnull(lb_photo)
p_1.setpicture(lb_photo)
都沒有用
uj5u.com熱心網友回復:
得設定sqlca.autocommit = true
用完了在設false
uj5u.com熱心網友回復:
select u_photointo :lb_photo
from t_user
where u_name = :ls_name
using sqlca;
messagebox("",len(lb_photo))
p_1.setpicture(lb_photo)
應改為 SELECTBLOB u_photo
into :lb_photo
from t_user
where u_name = :ls_name
using sqlca;
messagebox("",len(lb_photo))
p_1.setpicture(lb_photo)
uj5u.com熱心網友回復:
為什么不是SelectBlob?uj5u.com熱心網友回復:
SelectBlobuj5u.com熱心網友回復:
1、保存圖片時先設定AutoCommit為True這項就提交了以前的事務,同時開始了新的事務
保存完成后再將AutoCommit設定為False,保證將來事務的完整性。
在判斷更新資料庫時使用 SQLCA.SQLNRows來判斷是否真的有資料發生變化,
SQLCA.SQLCode只是說明這個SQL陳述句是執行了,有可能是沒有修改資料。
2、提取圖片時最好也先設定AutoCommit為True,完成后再設定為False
用SELECTBLOB陳述句提取圖片
UPDATEBLOB和SELECTBLOB的WHERE條件使用主鍵區別
uj5u.com熱心網友回復:
以上說的正確。并注意檔案 >32K 時,要通過回圈寫uj5u.com熱心網友回復:
PB10后,已經有一個很好的改進,就是增加了FileReadEx()和FileWriteEx()函式,回傳的位元組數改為long型了,不用再很麻煩地回圈讀寫了。
uj5u.com熱心網友回復:
selectblob已經改過來了,但是出現了如下錯誤:jpg processing error :jpg datastream contains no image
大家遇到過么?
uj5u.com熱心網友回復:
SELECTBLOB u_photointo :lb_photo
from t_user
where u_name = :ls_name
using sqlca;
messagebox("",len(lb_photo))
p_1.setpicture(lb_photo)
uj5u.com熱心網友回復:
我也遇到過這種問題, 不過我用BMP的檔案就沒事了。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/96421.html
標籤:數據庫相關
下一篇:關于如何開發PB Web應用
