大众计算机学习网

专门提供各种电脑教程

如何查看ACCESS二进制信息到底是什么

Admin | 2014-1-25 9:29:06 | 被阅次数 | 4058

  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);