VFP使用BLOB字段存取图片到SQL2000,显示出来也EASY

a7c4bf83dd24422a01d69227c89c371e.gif

首先来看一下BLOB这个数据类型的介绍:

大二进制对象(Blob)数据类型,若要存储一个任何种类的二进制数据,如 ASCII 码文本、一个可执行文件(.exe) 或一个带有不确定长度的字节字符串,可使用大二进制对象数据类型。对于从  SQL Server 中存储图像数据,大二进制对象数据类型显得特别有用。

你可以使用二进制的原文将值赋予一个大二进制对象字段。二进制原文以 0h 前缀开始,并跟随一个不用引号("")括起的十六进制的数字串(不同于字符串)。下面的列表包含了二进制原文的示例:

  • 0h202020

  • 0h6ABCDEF

  • 0h (空二进制原文)

二进制原文被限定为 255 个编码字节。

也就是说二进制原文是直接可以保存表BLOB字段里面的。

大二进制对象类型被数据库容器(.dbc)、自由表、临时表和视图所支持。例如,可以在“表设计器”的“字段”选项卡中为字段选择该类型。表可以包含多个大二进制对象字段。可以为大二进制对象字段指定默认值和 Null 值。大二进制对象字段支持字段有效性。

可以使用 EditBox 控件、Grid 控件中的 TextBox 控件,或通过发出带有大二进制对象字段名的 MODIFY MEMO 命令来查看带有大二进制对象类型字段的内容,然而,该内容只读。编辑框将大二进制对象类型数据显示为不带 0h 前缀的十六进制值。在表格中,如果大二进制对象类型字段为空,就显示“blob”字符串,而如果包含数据,就显示“Blob”字符串。可以双击表格中的大二进制对象字段,而“编辑”窗口以只读方式显示该数据。

不支持基于大二进制对象字段的索引关键字。在带有大二进制对象类型的数据上,不执行代码页转换。(这个对于unicode的应用非常有用。)

现在我们再来看一下SQL查询数据类型转换,在默认的时候,后台Image字段会被转换为通用字段,这不是我们想要的,而是直接能转换为BLOB字段。

CURSORSETPROP命令有个参数“MapBinary:

CURSORSETPROP("MapBinary",.t.,0)  &&通过此命令将SQL2000的IMAGE字段 转换为BLOB

来看一下查询代码:

CURSORSETPROP("MapBinary",.t.,0)  &&通过此命令将IMAGE 转换为BLOB


TEXT TO lcSQLCmd NOSHOW TEXTMERGE 
SELECT * FROM test 
ENDTEXT 


oDBSQLHelper= NEWOBJECT("MSSQLHelper","MSSQLHelper.prg")


IF oDBSQLHelper.SQLQuery(lcSQLCmd,"test")<0
  ?oDBSQLHelper.errmsg
  RETURN 
ENDIF 
If !Pemstatus(_Screen,"myimg",5)
  oImage=_Screen.AddObject("myimg","image")      
ENDIF    
_Screen.myIMG.Left=400
_Screen.myIMG.width=400    
_Screen.myIMG.height=400
_screen.myimg.Stretch=1
_Screen.myimg.PictureVal=image1    
_Screen.myIMG.top=1
_Screen.myIMG.Visible=.T.

ebad7b0dda4c6a1d667e6f24e4b20778.png

保存图片到SQL2000image字段也简单

*--将文件保存到BLOB字段
xxx=GETFILE()


yyy=0h+FILETOSTR(xxx)


TEXT TO lcSQLCmd NOSHOW TEXTMERGE 
INSERT into test (image1) values(?yyy)
ENDTEXT 


oDBSQLHelper= NEWOBJECT("MSSQLHelper","MSSQLHelper.prg")
IF oDBSQLHelper.ExeCuteSQL(lcSQLCmd)<0
  ?oDBSQLHelper.errmsg
  RETURN 
ENDIF

也有某位狐友说CA类做不到?

来生成一个DAL_CA类

a1974194342b38d31e60b00bb51353f2.png

少少的写一点代码看看:

bb079adaaaa82faf35e5c74a4cf1a2ac.png

一样的可以显示。

保存代码也看看

*--将文件保存到BLOB字段
xxx=GETFILE()
yyy=FILETOSTR(xxx)


odal_ca=NEWOBJECT("dal_test","dal_test.prg")


IF !odal_ca.cursorfill(.t.)
 RETURN 
ENDIF 
APPEND BLANK


replace image1 WITH yyy IN odal_ca.alias


IF !odal_ca.save()
  ?odal_ca.msg
  RETURN 
ENDIF

猫框的数据处理真是用起来太爽了。

猫猫的心里话

加菲猫的VFP|狐友会社群接收投稿啦

加菲猫的VFP,用VFP不局限VFP,用VFP混合一切。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。

商业模式,销售技巧、需求规划、产品设计的知识通通可以发表。

暂定千字50元红包,,优秀的文章红包更大,一经发表,红包到手。

如何帮助使用VFP的人?

用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。

我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。

加菲猫的vfp倡导用"VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发"

我已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。

2023年狐友会社群会员继续招募中

社群会员获取的权益有:

祺佑三层开发框架商业版(猫框),终身免费升级,终身技术支持。

开放的录播课程有:

微信小程序,微信公众号开发,H5 APP开发,Extjs BS开发,VFP面向对象进阶,VFP中间层开发。

源码类资源有:

支付组件源码,短信源码,权限组件源码,一些完整系统的源码。这个可以单独出售的,需要的可以联系我。

会员也可以实现群内资源对接,可以接分包,合作等各项商业或技术业务

e2557a0583c72301b8f92661372ccc08.gif

7ccb665774f553af8737126c819a979d.jpeg

3e6578cb38fb99340833fbcb24546daa.gif

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加菲猫的VFP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值