沙粒
如何将图片通过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钟锅王站
是的。所以不太好控制
简单的话,可隐藏共享
沙粒
我们这里一张图片也就是50kb--60kb,预计一个月200张图片,这个量算不算大呢?
Office钟锅王站
200 *0.6 约120M 一年 120*12 大于1G了
主席
SQL Server 2008及以上版本,推出了一个新的特性叫做文件流(FILESTREAM),它使得基于SQL Server的应用程序可以在文件系统中存储非结构化的数据,例如文档、图片等等
主席
2000的版本太低,至少2008才能支持
还有就是用SQLite来存图片,反正SQLite有2T的容量,把SQLite数据库加密,别人就算把SQLite数据库拷贝走,也拿不到图片。
但是不知道SQLite的数据库密码好不好破解
Office钟锅王站
数据库存图片,有一个保存和加载图片的过程,在使用上要慢一点。
但需要权限的放。只能是存数据库,或使用BS架构
主席
不是说SQL SERVER的文件流对文件管理有专门的优化么
不知道会不会快一点
王站,SQLite的数据库密码好破解么
木岂木
你这个图片像素是多大的,可以考虑压缩后再保存到数据库。
我去年做过照片压缩后保存到SQL数据库,数据库从40多GB,变为1GB多一点。
做了缩小像素,降低清晰度,图片只有10KB左右了。
实际清晰度看起来没什么改变。
沙粒
你这都太高级了,我连图片如何上传上去都不会啊,给我一个,让我参考一下吧
木岂木
摄像头照相的照片分辨率都比较大,900KB左右了。
一个月差不多也是几百上千的照片。
Office钟锅王站
@主席 我是说 代码加载的话。文件流有可能会快些
sqlite我现在还没试过破解过。但肯定有人会破的:)
木岂木
现在估计有3,4万张图片,数据增长很慢了。
嗯 优化后 效果非常好。
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数据库,可把整 个数据库放内存
处理速度 巨量提升
Office钟锅王站
内存数据库 不是用来处理你旧数据库
是指平常使用时
木岂木
新数据处理就简单多了,一次一张照片
我那头痛的是旧数据又有几种保存模式。
还需判断哪个图片用那个读取方法。
是把 我搞的最头痛的一次。
我发现新版本的acc一个被忽略的功能,
2010的acc启动报错了,用2013居然能打开正常运行,然后压缩修复一下,2010就能正常使用了。