Createblobstream使用FDTable / Sqlite将记录类型读写到Blobfield

时间:2018-12-17 22:35:41

标签: sqlite delphi

我试图将Record类型存储到Blobfield中。我正在使用SQLite和FDTable。我无法使它正常工作。我查看了有关Createblobstream的所有其他帖子,并尝试了许多方法,但均未成功。 我的记录要大得多,所以我得到了相同的结果,因此简化了这一点。

读回数据后我无法访问数据,始终无法访问。我以前在Delphi 2010中使用过此代码,但是我正在使用访问数据库。

任何方向将不胜感激。

TTestRec = Record
  Name : String;
  Number : Integer;
end;

procedure TForm.WriteBlobClick(Sender : TObject);
var
  R : TTestRec;
  BS : TStream;
  BFld : TBlobField;
begin
  R.Name:=Edit4.Text;
  R.Number:=Strtoint(Edit5.Text);

  BFld:=TBlobfield(Table1Settings);

  if Table1.State<>dsEdit then
    Table1.Edit;

  BS:= Table1.CreateBlobStream(BFld,bmWrite);
  Try
    BS.Writebuffer(R,Sizeof(TTestRec));
  Finally
    BS.Free;
  End;

  dmdata.Table1.Post;
end;

procedure TForm1.ReadBlobClick(Sender: TObject);
var
  R : TTestRec;
  BS : TStream;
  BFld : TBlobField;
begin
  BFld:=TBlobfield(Table1Settings);
  BS:= Table1.CreateBlobStream(BFld,bmRead);
  Try
    BS.ReadBuffer(R,sizeof(TTestRec));
  Finally
    BS.Free;
  End;

  Edit4.Text:=R.Name;
  Edit5.Text:=inttostr(R.Number);
end;

谢谢 -泰森

0 个答案:

没有答案