pb圖片上傳處理問題,急用,請大俠們指點

zwwei1220 软件工程师  2006-09-15 04:52:45
上傳圖片語法

blob lb_photo

//lb_photo 已由fileread函數讀入成二進制數據流文件格式

sqlca.autocommit = true
updateblob test1
set photo = :lb_photo
where a_id = :ls_id
using sqlca;

p_1.setpicture(lb_photo)

sqlca.autocommit = false

if sqlca.sqlcode = 0 then sqlca.sqlnrows > 0 then
commit using sqlca;
messagebox("成功","上傳圖片成功"+string(len(lb_photo)))
else
rollback using sqlca;
messagebox("出錯","上傳圖片出錯!"+sqlca.sqlerrtext)
end if

經測試,lb_photo本身是有數據值的,用p_1.setpicture(lb_photo)也可以顯示圖片,
但在上傳過程中, sqlca.sqlnrows 的值始終為0,
造成在 下載圖片的過程中
selectblob photo
into :lb_photo
from test1
where a_id = :ls_id
using sqlca;

取出的len(lb_photo) 為0(應該說lb_photo為null更恬當)

請大俠們指點 一下,圖片在上傳過程中的失敗問題
我用的是pb6.5+sql2000(注:我把代碼放到pb9.0裡面執行,又可以通過,圖片上傳與下載均無問題)
可我想在pb6.5把這個問題搞定,
請大俠們指點
急用,在線等
分數不夠再加分
...全文
347 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lionkings 2006-09-19
TO: zwwei1220 (csdn_love)
昨晚我也測試了﹐你應該用的是繁體win2000系統﹐你的SQL Server2000應該是簡體﹐像這種情況下的確存在pb6.5不能﹐而pb9可以的問題﹐我上面的代碼在簡體WinXP + 簡體SQL Server2000下用pb6.5可以﹐但是繁體Win2000+簡體SQL Server2000用pb6.5就不行﹐在pb8和pb9下用繁體簡體系統都行﹐我也不知道是什么問題了﹐期待高人指點。
回复
zwwei1220 2006-09-18
還問一下,lionlings,你在updateblob之後

有沒有測試過 sqlca.sqlnrows的值

在我寫的語法下,我調試測試時發現 sqlca.sqlnrows的值始終是0
雖然我的lb_photo變量中有圖片的值,
但在updateblob時,卻無法存進數據庫
回复
zwwei1220 2006-09-18
再問一下,image 是 not null 還是 null
有沒有默認值,
lionlings(游俠)大俠,你用的pb6.5的軟件能寄一份給我嗎,
你用的sql 2000的版本是什麼版的,個人版嗎?
回复
zwwei1220 2006-09-17
請問一下,image(16)是什麼意思
回复
lionkings 2006-09-17
image(16) 是圖片字段的長度﹐是SQL Server默認的﹐無法用戶自定義﹐就跟int類型一樣。
回复
lionkings 2006-09-16
补上我的TABLE结构:
TEST1
ID int
name char(5)
photo image (16)
回复
lionkings 2006-09-16
应该不会吧。我自己的代码在pb6.5测试过,没问题,图片可以上传也可以下载,这是我个人代码,希望可以帮到你:
---------读取图片文件名-----------
string ls_path, ls_filename
integer li_ret, li_cnt
boolean lb_f

li_ret = GetFileOpenName("选择图像文件", &
is_file, ls_filename, "jpg", &
+ "所有图像文件,*.tif;*.tiff;*.jfx;*.bmp;*.jpg;*.jpe;*.jpeg;*.pcx;*.dcx;*.xif;*.gif;*.wif," &
+ "TIFF 文件(*.tif; *.tiff; *.jfx), *.tif;*.tiff;*.jfx," &
+ "点阵图文件 (*.bmp),*.bmp," &
+ "JPG 文件 (*.jpg; *.jpe; *.jpeg),*.jpg;*.jpe;*.jpeg," &
+ "PCX/DCX 文件(*.pcx; *.dcx), *.pcx;*.dcx," &
+ "XIF 文件(*.xif), *.xif," &
+ "GIF 文件(*.gif), *.gif," &
+ "WIFF 文件(*.wif),*.wif," &
+ "所有文件 (*.*), *.*" &
)

IF li_ret <> 1 THEN
is_file = ''
End If
--------保存图片-------------------
blob lblb_data
long ll_id,row,ll_pos
boolean lb_auto
string ls_file, ls_path,ls_pictype = ''
integer li_ret
Integer li_FileNum, li_Index, li_Loops
Long ll_FileLength, ll_Bytes_Read
Blob lblb_Input, lblb_Temp

ls_file = is_file
if len(ls_file) = 0 then return
IF fileexists(ls_file) THEN

ll_FileLength = FileLength(ls_file)

IF ll_FileLength > 32765 THEN
IF Mod(ll_FileLength, 32765) = 0 THEN
li_Loops = ll_FileLength / 32765
ELSE
li_Loops = (ll_FileLength / 32765) + 1
END IF
ELSE
li_Loops = 1
END IF
li_FileNum = FileOpen(ls_file, StreamMode!, Read!, LockReadWrite!)

FOR li_Index = 1 TO li_Loops
FileRead(li_FileNum, lblb_Temp)
lblb_Input = lblb_Input + lblb_Temp
NEXT

FileClose(li_FileNum)


lblb_data = lblb_Input
p_1.setpicture(lblb_data)

lb_auto = sqlca.autocommit
sqlca.autocommit = true
updateblob photos set photo = :lblb_data where id = 1 using sqlca;


sqlca.autocommit = lb_auto

End If
----------下载图片------------------
blob lblb_data

selectblob photo
into :lblb_data
from photos
where id = 1
using sqlca;

p_1.setpicture(lblb_data)

回复
zwwei1220 2006-09-16
聽說CSDN上高手如雲,怎麼這個問題,
一直沒人問津,
是不是太簡單了,不值得過問啊
回复
相关推荐
发帖
数据库相关
创建于2007-09-28

738

社区成员

PowerBuilder 数据库相关
申请成为版主
帖子事件
创建了帖子
2006-09-15 04:52
社区公告
暂无公告