delphi blob字段_如何在Delphi中的BLOB字段中存储记录数据

delphi blob字段

In Delphi, a record data type is a special kind of user-defined data type. A record is a container for a mixture of related variables of diverse types, referred to as fields, collected into one type.

在Delphi中, 记录数据类型是一种特殊的用户定义数据类型。 记录是一个容器,其中包含各种类型的相关变量(称为字段)的混合,并被收集为一种类型。

In database applications, data is stored in fields of various types: integer, string, bit (boolean), etc. While most data can be represented with simple data types, there are situations when you need to store images, rich documents or custom data types in a database. When this is the case you will use the BLOB (Binary Large Object) data type ("memo", "ntext", "image", etc. - the name of the data type depends on the database you work with).

数据库应用程序中 ,数据存储在各种类型的字段中:整数,字符串,位(布尔)等。虽然大多数数据可以用简单的数据类型表示,但在某些情况下,您需要存储图像,丰富文档或自定义数据输入数据库。 在这种情况下,您将使用BLOB(二进制大对象)数据类型(“ memo”,“ ntext”,“ image”等-数据类型的名称取决于您使用的数据库)。

记录为Blob ( Record as Blob )

Here's how to store (and retrieve) a record (structure) value into a blob field in a database.

这是将记录 (结构)值存储 (和检索 )到数据库的Blob字段中的方法。

TUser = record ...Suppose you have defined your custom record type as:

TUser = record ...假设您已将自定义记录类型定义为:


TUser = packed record
   Name : string[50];
   CanAsk : boolean;
   NumberOfQuestions : integer;
end;

"Record.SaveAsBlob"To insert a new row (database record) in a database table with a BLOB field named "data", use the following code:

“ Record.SaveAsBlob”要将新行(数据库记录)插入带有名为“ data”的BLOB字段的数据库表中,请使用以下代码:


var
   User : TUser;
   blobF : TBlobField;
   bs : TStream;
begin
   User.Name := edName.Text;
   User.NumberOfQuestions := StrToInt(edNOQ.Text) ;
   User.CanAsk := chkCanAsk.Checked;
   myTable.Insert;
   blobF := myTable.FieldByName('data') as TBlobField;
   bs := myTable.CreateBlobStream(blobF, bmWrite) ;
   try
     bs.Write(User,SizeOf(User)) ;
   finally
     bs.Free;
   end;
end;

In the code above:

在上面的代码中:

  • "myTable" is the name of the TDataSet component you are using (TTable, TQuery, ADOTable, TClientDataSet, etc).

    “ myTable”是您正在使用的TDataSet组件的名称(TTable,TQuery,ADOTable,TClientDataSet等)。
  • The name of the blob field is "data".

    Blob字段的名称为“数据”。
  • The "User" variable (TUser record) is filled using 2 edit boxes ("edName" and "edNOQ")and a check box ("chkCanAsk")

    使用两个编辑框(“ edName”和“ edNOQ”)和一个复选框(“ chkCanAsk”)填充“用户”变量(TUser记录)
  • The CreateBlobStream method creates a TStream object for writing to the blob field.

    CreateBlobStream方法创建一个TStream对象以写入blob字段。

"Record.ReadFromBlob"Once you have saved the record (TUser) data to a blob type field, here's how to "transform" binary data to a TUser value:

“ Record.ReadFromBlob”将记录(TUser)数据保存到blob类型字段后,以下是将二进制数据“转换”为TUser值的方法:


var
   User : TUser;
   blobF : TBlobField;
   bs : TStream;
begin
   if myTable.FieldByName('data').IsBlob then
   begin
     blobF := DataSet.FieldByName('data') as TBlobField;
     bs := myTable.CreateBlobStream(blobF, bmRead) ;
     try
       bs.Read(user,sizeof(TUser)) ;
     finally
       bs.Free;
     end;
   end;
   edName.Text := User.Name;
   edNOQ.Text := IntToStr(User.NumberOfQuestions) ;
   chkCanAsk.Checked := User.CanAsk;
end;

Note: the code above should go inside the "OnAfterScroll" event handler of the myTable dataset.

注意:上面的代码应放在myTable数据集的“ OnAfterScroll”事件处理程序内。

That's it. Make sure you download the sample Record2Blob code.

而已。 确保下载示例Record2Blob代码。

翻译自: https://www.thoughtco.com/storing-record-data-in-blob-field-1057717

delphi blob字段

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值