Sql server 在Delphi中将TByteDnarray转换为TStream
如何在Delphi中将TbyteDnarray转换为TStream并将其保存在数据库中要将其保存在流中,请创建MemoryStream并在其上写入ByteDnArray: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
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
。