zoukankan      html  css  js  c++  java
  • VFP9 对 SqlServer Image字段的图片存取处理

    VFP9 的 Cast函数 和 Blob类型 对 VFP爱好者来说,真是个好消息。对于存储在 SqlServer 的数据表的 Image 字段内的图片数据,在 VFP9 之前的处理来说,真的是有些麻烦,现在好了,有了 Cast 和 Blob 来处理就简单多了。

    先来介绍一下吧:

    Cast()函数:
    把一个表达式从一种数据类型到另一种数据类型。
    CAST(eExpression AS cDataType [(nFieldWidth [, nPrecision])] [NULL | NOT NULL])
    参数
    eExpression
    指定一个数据表达式, 通常是在一条 SQL 语句中的你想转换到另一种数据类型的。eExpression 可以是一个字段, 计算字段或其它表达式类型。
    cDataType
    指定合法的名字或表示目标数据类型名子的字母。cDataType 也可以是一个等价于合法数据类型或代表合法数据类型的字母的表达式。 
    注意:如果为 cDataType 指定一个表达式, 必须用圆括号把 cDataType 指定的表达式括起来。
    一些字段数据类型要求为 nFieldWidthnPrecision 或两者指定值。
    nFieldWidth
    为特定数据类型指定字段宽度。Visual FoxPro 忽略以下数据类型的 nFieldWidth: D, T, I, Y, L, M, G 和 W。如果未指定 nFieldWidth, 就使用默认值, 例如, 被 CREATE TABLE 命令定义的值。
    nPrecision
    为特定的数据类型指定小数位。Visual FoxPro 忽略以下数据类型的 nPrecision: C, D, T, I, Y, L, M, G, V, Q 和 W。如果没有为 数值型Float 数据类型指定 nPrecision, 默认为零 (0), 没有小数。如果 nPrecision 没有 Double 型未包含 nPrecision, 默认的小数位是由 SET DECIMALS 命令设置的值。如果其它类型数据未指定 nPrecision, 就使用默认值, 例如, 由 CREATE TABLE 命令定义的值。
    NULL | NOT NULL
    指定是否在字段中允许 null 值。
    注意:如果一个或多个字段可以包含 null 值, 表中可包含的最大字段数从 255 减少至 254。
    如果没有指定 NULLNOT NULL, 它从表达式继承。

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

    需要注意的是:每个字符串的字符或内存变量的最大数目为16,777,184字节,所以,在程序中处理时通常允许的最大图片文件约16M。

    示例代码:

    Local lcImageName
    lcImageName = AddBs(JustPath(Sys(16,1))) + Sys(2015)+'.jpg' && 设置本地文件名.
    nCon=SqlStringConnect("Driver=SQL Server;Server=SERVER;Uid=sa;pwd=;database=DBSMarket") 
    cSqlStr="Select Photo From T_BaseInfo Where ProID=1"
    =SqlExec(nCon,cSqlStr,"CurTemp")
    =SQLDisconnect(nCon)
    =StrToFile(Cast(CurTemp.Photo As W), lcImageName, 0)
    Use In ("CurTemp")
    If File(lcImageName)
       ThisForm.Image1.Visible = .T. 
       ThisForm.Image1.Picture = lcImageName
    Else
       ThisForm.Image1.Picture = lcImageName
       ThisForm.Image1.Visible = .F. 
    EndIf
    Erase [&lcImageName]

    *!********* 结束

    相关知识的文档链接

    获取图片的VFP示例见:VFP调用API来控制USB摄像头,实现拍照或录像

    图片的编辑处理可参见:
    VFP9.0的GDI+类的使用 和 VFP9利用_GdiPlus类处理图片分辨率及缩放 两文介绍。

    图片处理涉及到剪辑版可参见:VFP 图形文件与剪切板互换的API解决方法

  • 相关阅读:
    Python爬虫实例:爬取豆瓣Top250
    爬虫协议 Tobots
    【Python 库】bs4的使用
    【Python 库】Selenium 的使用
    【Python 库】Selenium 浏览器驱动
    【Python 库】机器学习三剑客之 NumPy
    【Python】zip 函数的用法
    面试(一)-HashMap
    由树到数据库索引
    Win10下安装RabbitMQ以及基本知识学习
  • 原文地址:https://www.cnblogs.com/hnllhq/p/12376104.html
Copyright © 2011-2022 走看看