芯友网xin1234.com

如何将图片通过access保存到sql server数据库中呢?有实例吗?



沙粒
如何将图片通过access保存到sql server数据库中呢?有实例吗?
木岂木
应该很多
沙粒
没有找到啊?
木岂木
继续找
沙粒
,你做过这方面的东西吗?
木岂木
沙粒
能不能让我借鉴一下
Office钟锅王站
@木岂木 太多了
图片保存到文件及保存到数据库字段
http://www.office-cn.net/thread-57489-1-1.html
或按OLE 关键字搜索 ,有很多版主的 示例和代码
access图片以二进制的形式写进数据库并读取
http://www.access-cn.com/src/220-cn.html
沙粒
谢谢
Office钟锅王站
前段时间帮客户 做了个保存到sql server ,就是用第一个贴子的代码。
需要图片权限,且图片不大,使用这种方式
不需要图片权限,且图片很多很大,使用文件保存到文件夹方式较好
沙粒
谢谢了
Office钟锅王站
@沙粒 
沙粒
文件保存到文件夹的形式,是在服务器端建立一个文件夹,来存放图片的意思吗?
Office钟锅王站
是的。但文件夹不好控制 权限
沙粒
是不是说只要能够打开这个文件夹的人,都能对文件夹中所有图片进行操作?
Office钟锅王站
是的。所以不太好控制
简单的话,可隐藏共享
沙粒
我们这里一张图片也就是50kb--60kb,预计一个月200张图片,这个量算不算大呢?
主席
Office钟锅王站
200 *0.6  约120M  一年 120*12 大于1G了
沙粒
嗯,这还是保守的统计数字
主席
可以用SQL SERVER的流文件进行管理
沙粒
好高深啊,能具体说说嘛?
主席
SQL Server 2008及以上版本,推出了一个新的特性叫做文件流(FILESTREAM),它使得基于SQL Server的应用程序可以在文件系统中存储非结构化的数据,例如文档、图片等等
沙粒
我们这里使用的还是2000的数据库
主席
2000的版本太低,至少2008才能支持
还有就是用SQLite来存图片,反正SQLite有2T的容量,把SQLite数据库加密,别人就算把SQLite数据库拷贝走,也拿不到图片。
但是不知道SQLite的数据库密码好不好破解
Office钟锅王站
数据库存图片,有一个保存和加载图片的过程,在使用上要慢一点。
但需要权限的放。只能是存数据库,或使用BS架构
主席
不是说SQL SERVER的文件流对文件管理有专门的优化么
不知道会不会快一点
王站,SQLite的数据库密码好破解么
木岂木
你这个图片像素是多大的,可以考虑压缩后再保存到数据库。
我去年做过照片压缩后保存到SQL数据库,数据库从40多GB,变为1GB多一点。
做了缩小像素,降低清晰度,图片只有10KB左右了。
实际清晰度看起来没什么改变。
沙粒
你这都太高级了,我连图片如何上传上去都不会啊,给我一个,让我参考一下吧
木岂木
摄像头照相的照片分辨率都比较大,900KB左右了。
一个月差不多也是几百上千的照片。
沙粒
给我发个程序,让我抄抄吧。
Office钟锅王站
@主席 我是说 代码加载的话。文件流有可能会快些
sqlite我现在还没试过破解过。但肯定有人会破的:)
主席
明白,多谢
Office钟锅王站
@木岂木 图片优化后小很多
木岂木
现在估计有3,4万张图片,数据增长很慢了。
嗯 优化后 效果非常好。
Office钟锅王站
可以单独一个数据库存图片,相对安全些。也可分开备份数据库
木岂木
这个代码不好给你,太多太复杂。
Office钟锅王站
图片可以代码批量优化
木岂木
而且需要在我这个网络环境才能运行。
是啊,
旧数据做了批量压缩
但数据库缩小是重构了一次。
Office钟锅王站
在上传图片前先用代码 自动优化 然后再上传
木岂木
新照片是这样处理的。
照相,压缩,上传。
旧照片我还做了个专门的批量压缩。
下载,压缩,上传。
Office钟锅王站
嗯 。是这样
也可检查文件大小,超过50K 就提示之类
木岂木
嗯做了这个检测的。
主席
文件流的存文件的数据库文件,是单独的,和存数据的是不同的文件
使用文件流,就可以实现单独备份
木岂木
像素控制在300X200,
压缩后不超过10KB
看不出失真。
Office钟锅王站
失真肯定会的,只是你需要的分辨率 看不出
木岂木
嗯 
两个多小时就处理完旧数据了。
@沙粒 

你先找个简单的例子照着做,我那个太复杂。我自己都要看半天才搞的清楚是那些代码。
沙粒
我听你们说了半天,我都晕圈了,感觉这个好难做啊
木岂木
是比较难,比较繁琐了。
但你搞懂了,又决定还是没想象的难。
主席
这个要会写代码,不然搞不定
木岂木
呵呵呵  按常规思路也搞不定。
主席
用ADO的文件流打开文件,然后用ADO写入数据库。不算太复杂
木岂木
特别是旧数据库中的照片压缩
40GB的数据库,
主席
压缩照片嘛,就在网上找个现成的模块了
木岂木
我顺利批量处理完旧照片,我发现我做这个数据处理还是个天才。


不仅仅是压缩那么简单
你不信你做,一点就死机了。
你可能想的是找个大容量高性能的服务器来搞。
主席
不会
用 vbRichClient5.dll 来处理,速度会很快的
木岂木
问题不在压缩处理速度。
沙粒
我是简单的代码会写,但是复杂一点就看不懂了
木岂木
负载问题
ADO是需要把表加载到内存里的。
当然思路好几种。
批量压缩我是用VB做了个批量压缩程序才搞定的。
Office钟锅王站
不需要一开始加载所有数据库中的图片
加载表,可以只取ID,根据ID,再取对应的数据表中的这条图片数据
这个加载很快
木岂木
嗯 ,只能一条记录一条记录去加载
Office钟锅王站
VB原理与VBA 是类似。
只是VB有图片控件,控制多一些。
VBA图片处理要借助API 
木岂木

一个表用了两个数据集
Office钟锅王站
主席说的这个 vbRichClient5.dll 如果配比Sqlite数据库,可把整 个数据库放内存
处理速度 巨量提升
木岂木
太大了,放不进去。40个GB
Office钟锅王站
内存数据库 不是用来处理你旧数据库
是指平常使用时
木岂木
新数据处理就简单多了,一次一张照片
我那头痛的是旧数据又有几种保存模式。
还需判断哪个图片用那个读取方法。
是把 我搞的最头痛的一次。
我发现新版本的acc一个被忽略的功能,
2010的acc启动报错了,用2013居然能打开正常运行,然后压缩修复一下,2010就能正常使用了。

相关问题
------分隔线----------------------------
赞助商链接
赞助商链接