Sql server 在Delphi中将TByteDnarray转换为TStream

Sql server 在Delphi中将TByteDnarray转换为TStream,sql-server,delphi,Sql Server,Delphi,如何在Delphi中将TbyteDnarray转换为TStream并将其保存在数据库中要将其保存在流中,请创建MemoryStream并在其上写入ByteDnArray: ResultStream := TMemoryStream.Create; ResultStream.Write(MyByteDynArray, Length(MyByteDynArray)); ResultStream.Position := 0; 若要将其保存在数据库中,请使用参数化SQL语句创建查询对象(F

如何在Delphi中将TbyteDnarray转换为TStream并将其保存在数据库中

要将其保存在流中,请创建MemoryStream并在其上写入ByteDnArray:

  ResultStream := TMemoryStream.Create;
  ResultStream.Write(MyByteDynArray, Length(MyByteDynArray));
  ResultStream.Position := 0;
若要将其保存在数据库中,请使用参数化SQL语句创建查询对象(FDQuery、ADOQuery…):

update MyTable set MyColumn = :Data where Id = 1;
并在该参数上加载流:

MyQuery.ParamByName('Data').LoadFromStream(ResultStream);

如果从MS Sql Server获取数据,首先为什么需要使用TByteDnArray?请说明您的Delphi版本?您使用哪个数据库客户端库?为了避免复制,您可以使用受保护的
SetPointer
方法直接使用数组数据,或者在某些XE+版本的Delphi中,只需使用与此相同的
tbytestream
。请注意,答案中显示的
Write()
重载是在XE3中引入的,对于早期版本,请使用
Write(MyByteDynArray[0],…)
Write(PByte(MyByteDynArray)^,…)
。2009年D2引入了
tbytestream