在网上看到了不少介绍

VB

如何在

SQL SERVER

中存取图片数据的文章。

经自己实现后,最终把心得拿出来和大家分享。

GOOGLE

搜索,网上的对数据库图片进行存储的文章,绝大部分是来自一篇。都是采用

ADO Stream

方法使用

field

对象的

AppendChunk

GetChunk

方法将大容量的二进制数组通过

Update

存储到数据库中。

Dim Conn as ADODB.Connection'

声明

Connection

对象

Dim Rs as ADODB.RecordSet'

声明

RecordSet

对象

CONST BLOCKSIZE=4096'

定义缓冲区块大小

Set Conn = New ADODB.Connection

Conn.ConnectionString = " DATA SOURCE = PUBS "'ODBS

数据源名称为

PUBS

Conn.Open

Set Rs = New ADODB.RecordSet

Rs.Open "test", Conn, adOpenKeyset, adLockOptimistic'

数据库表为

"test"

Dim Data() as Byte'

声明字节型数组,存放数据库图片信息

Dim FileLength as Integer'

文件长度变量

Dim BlockNum as Integer'

存放缓冲区块的个数

Dim DataLeft as Integer'

存放取整块后的遗留信息

Open "C:\TEST.BMP" for BINARY as #1'

假设图片文件为

C:\TEST.BMP

Dim i as Integer

FileLength = LOF(1)

BlockNum = FileLength \ BLOCKSIZE'

整取块大小,得缓冲区块数

DataLeft = FileLength Mod BLOCKSIZE'

整块取后的遗留

ReDim Data(BLOCKSIZE)'

重新定义缓冲区块大小为

BLOCKSIZE

For i=1 to BlockNum

Get #1,,Data()

Rs(0).AppenChunk Data()'

Data()

复制至

Rs(0)

字段,假设

test

表中的

image

为第一字段

Next i

ReDim Data(DataLeft)'

重新定义块大小取得遗留信息

Get #1,,Data()

Rs(0).AppendChunk Data()'

此时图片信息已全部拷贝至当前记录

Rs(0)

字段

Close #1

...

Rs.UpDate

具体的存储方法如上所述。

下面将简单的介绍取出信息的方法:

介绍说,将图片二进制存储信息用

GetChunk

方法取出,将其存储为临时文件即可。

REM

Rs

为打开的数据库表对应的

RecordSet

对象,其中的

image

对象仍然为第一字段

REM

接着上面的思路

Dim Data() as Byte'

声明字节型数组,存放数据库图片信息

Dim FileLength as Integer'

文件长度变量

Dim BlockNum as Integer'

存放缓冲区块的个数

Dim DataLeft as Integer'

存放取整块后的遗留信息

Dim i as Integer

ReDim Data(BLOCKSIZE)

Open "C:\TMP.BMP" for BINARY as #1

FileLength = Rs(0).ActualSize

BlockNum = FileLength \ BLOCKSIZE

DataLeft = FileLength Mod BLOCKSIZE

ReDim Data(BLOCKSIZE)

For i = 1 to BlockNum

Data() = Rs(0).GetChunk(BLOCKSIZE)'GetChuk

方法有一个参数为

Size

Next i

Put #1,,Data()

ReDim Data(DataLeft)

Data() = Rs(0).GetChunk(DataLeft)

Put #1,,Data()

Close #1

关于存取的内容全部于上面已经列出,组织的方法还请各位网友自行去组织一下。

如果有什么缺乏说明或是不正确的地方,还请各位能够指出。

对于此问题的实现,本人还有一个设想,打算利用

SQL SERVER

的服务器端来实现存储过程,使得客户端的存取数据库图片信息更加方便。

具体的实现可能还得努力等看书之后,期待中

......

后记:

在具体存储过程中,遇到了一个关于Rs的属性长度的问题,原先采用的是Len(Rs(0))[Rs(0)为image对象],但测试时总是缺少一半的字符长度,后来查明对于Byte型数组进行Len()求值时,只会取到一半的数值。如:

Dim a(4096) as ByteMsgbox Len(a())

结果是:2048

原因分析:可能跟VB中Len函数的ANSI或是UniCODE有关。但是了准确的原因还没有查出,因为时间关系,暂时还不能去做,到时查出后再附上。

c++ mysql 存储图片路径_3.用ADO实现图片在数据库中存储相关推荐

  1. webpack打包js文件,图片路径错误,没有将图片打包的问题

    初用 webpack 进行项目开发的同学会发现:在 js 或者 vue 中引用的图片都没有打包进 bundle 文件夹中.这时是需要require的方式进行图片路径的引用,这样引用的图片就可以成功打包 ...

  2. 数据库中存储图片等文件的小探讨

    关于在数据库中存储图片文件的问题 直接存储在数据库中 这样做有什么问题 另寻方法 或许接下来的文章没有明显的帮到你解决存储问题,但花点时间耐心的往下读一读,在思路上或许对你可以有点帮助! 直接存储在数 ...

  3. mysql 营业时间_mysql – 在数据库中存储各种商店开放时间的方法

    我想在数据库中存储不同商店的营业时间.目前我正在使用最简单的解决方案: CREATE TABLE opening_times( shop_id int(3) NOT NULL, times varch ...

  4. 数据库中存储大量图片设计

    数据库中存储大量图片设计 1. 图像的存储策略 在数据库的开发过程中,经常需要在数据库中存储一些备注信息,而这些备注信息的内容一般较大,格式多样-如有可能是语音文件.视频文件.图片文件.文本文件等,怎 ...

  5. 在SQL数据库中存储纬度和经度数据时要使用的数据类型是什么? [重复]

    本文翻译自:What datatype to use when storing latitude and longitude data in SQL databases? [duplicate] Th ...

  6. 树结构如何在关系型数据库中存储

    在数据库中存储分层数据 ​ 无论您是想建立自己的论坛,还是想在网站上发布邮件列表中的消息,还是想编写自己的cms:总有一天,您会希望将分层数据存储在数据库中.而且,除非您使用类似XML的数据库,否则表 ...

  7. python获取数据库用户名密码_在数据库中存储用户和密码

    我正在创建一个用户+密码的软件.认证后,用户可以访问一些半公共服务,但也可以加密一些只有用户才能访问的文件.在 用户必须按原样存储,如有可能,无需修改.在auth之后,只要软件还在运行,用户和密码都会 ...

  8. android studio数据库存储数据,如何使用API​​ 23在android studio中的数据库中存储数据?...

    大多数时候我不会发布任何内容,因为我可以在其他帖子中找到我需要的所有内容,但是现在我已经有几天了,您如何在数据库中存储任何内容?这是我的Java代码如何使用API​​ 23在android studi ...

  9. 数据库中存储日期的字段类型究竟应该用varchar还是datetime ?

    背景: 前段时间在百度经验看到一篇文章<如何在电脑右下角显示你(爱人)的名字>,之前也听过这个小技巧,但没真正动手设置过.所以出于好奇就实践了一下. 设置完成后的效果例如以下.右下角的时间 ...

最新文章

  1. 2018-3-7论文网络评论中非结构化信息的表示与研究--------实验分析
  2. 分布式架构的对比-3Par InServ
  3. 干货丨机器学习必知的15大框架
  4. oracle存储照片,[oracle]中存储图片
  5. 创建微服务架构的步骤_成功备战微服务的5个准备步骤
  6. 【Qt】 XML流读写XML
  7. echarts 山东地图_用Python画中国地图,实现各省份数据可视化
  8. java 继承作用_java三大特性之继承
  9. 老年人计算机应用基础,国开电大老年心理健康作业一参考答案
  10. 分布式、集群和负载均衡的概念解释
  11. 20191216每日一句
  12. 如何用BIGEMAP在Arcgis中使用bigemap制作特定比例尺的交通位置图
  13. Arranging The Sheep
  14. 如何在Mac上为 Apple ID 设置双重认证?
  15. 服务器部署MySQL过程
  16. 10.2-控制单元CU的微程序设计
  17. 怎么提升淘宝网店的转化率
  18. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等
  19. 编译原理课程实践——实现一个初等函数运算语言的解释器或编译器
  20. JS 常用的六种设计模式介绍

热门文章

  1. 2 Oracle用户和表空间
  2. .jsp后缀语言_ARM汇编语言入门(三)
  3. cocos2dx标准容器_Cocos2d-x3.0模版容器详解之三:cocos2d::Value
  4. 阿里云云效如何帮助企业10倍研发效能提升?
  5. 一文讲透 Git 底层数据结构和原理
  6. Android Flutter 内存机制初探
  7. FPS武器设计:丹威森500型左轮手枪的制作流程
  8. Nature 机器智能综述:AI如何自动生成游戏
  9. LOL手游锤石上线吓坏玩家?英雄设计被吐槽,玩家:还我端游锤石
  10. 重置mysql root密码