# Re: 如何储存图档比较好?

Posted by 老怪 on September 10, 1998 at 23:40:03:

In Reply to: 如何储存图档比较好? posted by Linus on September 07, 1998 at 18:04:49:

: 我有个会员系统,其中想显示会员照片图档,
: 可是我不知道该如何储存它及展示,
: 应该是存路径就好,还是可以用binary的方式把图档存到db?
: 如果是后者,该如何display呢?
: thanks

这是我的说明
老怪答：

首先你要加二进制资料的栏位必须是 Memo or LongBinary.
开启资料库
Dim Db As Database
Dim Rs As Recordset
Set Db = OpenDatabase("YourDataBasePathAndName")
Set Rs = Db.OpenRecordset("YourTabelName")
读取二进制档案
Dim Buff() As Byte
Dim FileHandle As Integer
FileHandle = FreeFile
Open "YourZipPathAndName" For Binary As #FileHandle
ReDim Buff(LOF(FileHandle) - 1)
Get #FileHandle, , Buff
Close #FileHandle
用 AppendChunk 把 Buff 加到 LongBinary 栏位里
Rs.AddNew
Rs!FieldName.AppendChunk Buff
Rs.Update
用 GetChunk 取出 LongBinary 栏位里的资料
Dim Buff() As Byte
ReDim Buff(Rs!Image.FieldSize - 1)
Buff = Rs!FieldName.GetChunk(0, Rs!Image.FieldSize)
把取出之 Buff 资料回存硬碟档案中
Dim FileHandle As Integer
FileHandle = FreeFile
Open "OutPutZipName" For Binary As #FileHandle
Put #FileHandle, , Buff
Close #FileHandle
虽然以上方法可以达成加入二进位资料(其实就是任何电脑资料的意思，包括执行程式。)的目的，但是老怪不鼓励大家这么做，因为过大的栏位有下列缺点：
过大的栏位资料会拖垮资料库的搜寻速度。
不固定的资料栏位长度，降低网路资料传送的效率。
放在栏位里的资料比单独的档案存放不安全，也就是说栏位资料比较容易毁损，而且只要一个栏位位置错误，就会导致所有 LongBinary 栏位的混乱，导致所有存放在此资料库里的二进资料一起报销。
你无法检查二进资料存取是否完整，如果你放的是执行程式，万一部份资料遗失，你应该能想像它的后果。
所以几乎所有的资料库书籍都告诫读者，宁可开个档案路径记录栏位，有需要再依栏位记录找到该档案加以处理。

Follow Ups: