在PB里面怎样将图片存到sql server数据库中!

xtjack 2000-06-14 11:27:00
我使用selectblob和updateblob都没用!
还利用将bmp文件用fileread读成blob变量,然后update还是不行!
请高手们赐教!!
...全文
317 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nn_wzy 2000-06-30
  • 打赏
  • 举报
回复
使用pb7.0还要用控件吗。
xtjack 2000-06-29
  • 打赏
  • 举报
回复
client class 选择你要放入的图象类型,一般来说是bmp图象,至于jpg现在海没有找到方法
client name 就写字段名加上'',如:'zp'
s1977 2000-06-29
  • 打赏
  • 举报
回复
我依这样的方法试了,不行。
参考了PB的例子,方法就是这样的,可不知为什么不行。
放在数据窗口里,没有显示;放在事件窗口里用ole_1.objectdata = zp 也不行,和你上面的提示信息一个样!而zp里数据肯定没错,我将其写成文件就可看到。why?
s1977 2000-06-28
  • 打赏
  • 举报
回复
待我试一下!
我曾用DB ole 在数据窗口中试过,但没能成功,client class 和client name 填写什么呢?还有要是想要显示jpg格式的图片呢?我现在显示jpg图片用了一个专门的控件,但在ole class里找不到。
xtjack 2000-06-27
  • 打赏
  • 举报
回复
我的意思是可以在时间窗口中用DB ole显示,也可以在窗口中用OLE显示!
在数据窗口中显示时这样的:
在新建一个数据窗口的时候,你的image字段不能被选择在sql 语句中,当其他数据字段排列好了之后,选择控件中的DB OLE,然后定义他的列字段(image字段),填写一下几项:
选择table和字段名(image)
key Clause一般填写主键如zjbh=:zjbh;
ole class一般填写该ole显示的类型,一般填写bmp图象
client name expression一般填写字段名(image字段),但是要用'括起来,如:'fzrzp'
不信你去试一下!
s1977 2000-06-26
  • 打赏
  • 举报
回复
到要请教你了xtjack,如何在数据窗中用ole控件显示图片?我以前都是将其显示在窗口中的,dbole 如何用?
谢谢
xtjack 2000-06-22
  • 打赏
  • 举报
回复
行了,现在我已经搞定!
原来是image字段为空的时候不能updateblob,
在datawindow里面显示用DBole
也可以用ole控件显示!!
谢谢
s1977 2000-06-21
  • 打赏
  • 举报
回复
你显示图片用的是什么控件?
xtjack 2000-06-15
  • 打赏
  • 举报
回复
我用的是sql server数据库!!按照你说的方法是可以插进去,但是取出来的时候就会出现问题!!错误是
Bad runtime function refrence.......
我的插入数据的方法是:
sqlca.autocommit=true
getfileopenname("",pathname,filename,"","bmp Files (*.bmp),*.bmp")
fh = FileOpen(pathname, StreamMode!)
IF fh <> -1 THEN
li_bytes=FileRead(fh, emp_id_pic)
if isnull(emp_id_pic) then
messagebox("","emp_id_pic is null")
return
end if
FileClose(fh)
UPDATEblob test SET zp = :Emp_id_pic;
messagebox("",sqlca.sqlcode)
IF sqlca.sqlcode = 0 THEN
COMMIT;
else
messagebox("Error","Insert image error>>"+sqlca.sqlerrtext)
return
END IF
else
return
END IF
sqlca.autocommit=false

取出图片到ole里面就出错,并且不能在数据窗口里面显示:我想是不是插入的时候的数据有问题!
selectblob zp into :zp2 from test;
if sqlca.sqlcode<>0 then
messagebox("error","取出照片出错2")
return
end if
if isnull(zp2) then
messagebox("","zp is null")
return
end if
ole_1.objectdata = zp2
请高手们指教!!谢谢
xtjack 2000-06-14
  • 打赏
  • 举报
回复
不行,能否具体举一个例子!!!
我也是这样写的,效果是不行!
wolcy 2000-06-14
  • 打赏
  • 举报
回复
先用insert语句插入一行,再用updateblob更新此行
s1977 2000-06-14
  • 打赏
  • 举报
回复
这样:先将fileread读入一blob变量例如 tp1 ,然后insert一条记录,假如主键为 k :insert into xxx(k,tp) values (:kk,:tp2);此处的tp2也是一blob型的,然后再用updateblob xxx set tp = :tp1 where k =:kk;更新这个tp2 就行了。必须注意的是此时的 autocommit 必须是 ture,否则....你就等着吧 :)

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧