51CTO技术论坛 » PowerBuilder » 为什么保存不了小图片到数据库?        上一帖     下一帖    查看完整版本

页: [1]

pengyunan2008-7-8 12:55
为什么保存不了小图片到数据库?

各位大家好,我想请教大家一个问题:保存一个只有7K的图片到数据库里,但却保存不了,何解?
用的是PB6.5和SQL Server2000
数据库里用的字段类型是:image
因为图片小,只要读一次图片文件就可以了,所以我没有写判断语句。

代码如下:
1、保存按钮click事件:
long ll_handle
blob emp_id_pic
string ls_dwo = "111"
ll_handle = fileopen("test.bmp" ,StreamMode!)
fileread(ll_handle,emp_id_pic)
fileclose(ll_handle)
messagebox("",string(emp_id_pic))
insert into u_test (u_carid) values (:ls_dwo);
UPDATEBLOB u_test set u_Memo = :emp_id_pic where u_carid = :ls_dwo;
commit;

2、读取按钮click事件:
string ls_temp
blob temp
ls_temp = "111"
selectblob u_Memo into :temp from u_test where u_carid = :ls_temp;
p_1.SetPicture(temp)

pengyunan2008-7-8 15:06
请各位指教一下是哪里出错了,谢谢。

ribut92252008-7-9 00:32
一、使用blob对象保存到数据库的时候,要设置连接对象为自动提交
SQLCA.AutoCommit=TRUE;
保存完毕后再改回来
SQLCA.AutoCommit=false

读取的时候也同理

二、insert into 、updateblob语句执行后,都检查一下SQLCA.SQLCODE的返回值,看看语句执行是否成功
三、SELECTBLOB语句执行完成后,也应该检查一下SQLCA.SQLCODE的返回值,确定一下读、写数据库是否成功

四、如果还是找不到原因,那么,你再判断一下读图片是否正确
messagebox("数据长度",len(emp_id_pic))

pengyunan2008-7-9 05:11
好的,真的非常谢谢您版主。
我先试试,这个论坛真好。

pengyunan2008-7-9 05:33
版主您好!
按您说的修改了程序,测试结果如下:
二、insert into 、updateblob语句执行后,都检查一下SQLCA.SQLCODE的返回值,看看语句执行是否成功
返回值:0

三、SELECTBLOB语句执行完成后,也应该检查一下SQLCA.SQLCODE的返回值,确定一下读、写数据库是否成功
返回值:0

四、如果还是找不到原因,那么,你再判断一下读图片是否正确
messagebox("数据长度",len(emp_id_pic))
长度:310

但运程序后还是无法显示图片,何解呢?

yf_DiNozzo2008-7-20 23:51
数据库连接呢

ribut92252008-7-21 00:01
楼主,检查向数据库里修改数据
insert into .......  //新增数据
if sqlca.sqlcode<>0 then
    messagebox("提示","新增数据失败")
   rollback;
else
      //修改数据
      updateblob 表名  set ...........
      if sqlca.sqlNrow=0 then
          messagebox("提示","保存数据失败")
          rollback;
      else
          commit;
          messagebox("提示","保存数据完毕")
      end if
end if


update语句,是用sqlNrow来检查是否修改成功



相关文章:
青春梦想--我与祖国共奋进
关于retrieve参数的问题
PB打印标签DLL,支持128码
PB9 + sql2000 开发,用windows什么系统好
如何筛选同一内容的最新记录?

查看完整版本: 为什么保存不了小图片到数据库?


Powered by 51CTO.COM