ACCESS里面的数据表,如果哪个字段是二进制信息,那么,是不能直接就查看到具体的信息的,一般得使用编程的方法将其显示出来,方知到底是什么信息。
假设使用VB的话,可以使用OLE控件来显示,程序如下:
Option ExplicitPrivate Sub Form_Load()' 先在窗口上添加一个 Data 控件和一个 OLE 控件
With Data1
.DatabaseName = "数据库名称.mdb" ' 指向数据库
.RecordSource = "数据表名称" ' 指向表名
End With' 手动设置 OLE1 的 DataSource 属性为 Data1
OLE1.DataField = "二进制的字段名" ' 指向字段
End Sub
上例中的DATA控件也可用ADO代替。下面的代码为ADO存取二进制数据的方法。
前提条件,假设有如下结构的数据表。
在access中建一个备注字段,名为binary。主键id。有一timage已装载的图片。memstream为tmemorystream;p为byte。
存入二进制的代码
self.Image1.Picture.Bitmap.SaveToStream(memstream);
memstream.seek(0,soFromBeginning );
while memstream.Position<memstream.Size do
begin
memstream.ReadBuffer(p,1);
i:=length(inttostr(p));
self.ADODataSet1.Recordset.Fields[1].AppendChunk(inttostr(i)+inttostr(p));
end;
self.ADODataSet1.Recordset.UpdateBatch(1);
读取二进制的代码
with self.ADODataSet1 do
begin
while i< recordset.Fields[1].ActualSize do
begin
l:=strtoint(recordset.Fields[1].GetChunk(1));
m:=recordset.Fields[1].GetChunk(l);
i:=i+2*l+2;
try
b:=strtoint(m);
memstream.Write(b,1);
except
begin
showmessage(inttostr(l));
end;
end;
end;
end;
memstream.Seek(0,soFromBeginning);
self.Image1.Picture.Bitmap.LoadFromStream(memstream);