Sql server 在SQL Server数据库中存储生物特征模板

Sql server 在SQL Server数据库中存储生物特征模板,sql-server,delphi,ado,widestring,Sql Server,Delphi,Ado,Widestring,我有一个系统,通过仓鼠捕捉用户的生物特征,并在宽字符串中获取生物特征模板,我的问题是在数据库中记录和检索字符串,必须缺少字符串的某些部分,查看代码以保存和检索生物特征模板: 保存: 我通过变量\u template var _Template: WideString; function StrToMemoryStream(SourceString: WideString): TMemoryStream; begin Result := TMemoryStream.Creat

我有一个系统,通过仓鼠捕捉用户的生物特征,并在
宽字符串中获取生物特征模板,我的问题是在数据库中记录和检索字符串,必须缺少字符串的某些部分,查看代码以保存和检索生物特征模板:

保存:

我通过变量
\u template

var
  _Template: WideString;

  function StrToMemoryStream(SourceString: WideString): TMemoryStream;
  begin
    Result := TMemoryStream.Create;
    Result.WriteBuffer(Pointer(SourceString)^, Length(SourceString));
    Result.Position := 0;
    SetLength(SourceString, Result.Size);
    Result.ReadBuffer(Pointer(SourceString)^, Result.Size);
  end;
  // getting biometric string
  _Template := GetStringBiometric;
  // saving into database
  ADOQuery1.Open;
  ADOQuery1.Edit;
  TBlobField(ADOQuery1.FieldByName('CLD_TEMPLATE1')).LoadFromStream(StrToMemoryStream(_Template));
    ADOQuery1.Post;
之后,获取数据库的值

var
  _Template: WideString;

  function GetStrToStream(Field: TField): WideString;
  var
    Stream: TMemoryStream;
  begin
    Result := '';
    Stream := TMemoryStream.Create;
    try
      TBlobField(Field).SaveToStream(Stream);
      Stream.Position := 0;
      SetLength(Result, Stream.Size);
      Stream.ReadBuffer(Pointer(Result)^, Stream.Size);
    finally
      FreeAndNil(Stream);
    end;
  end;

  ADOQuery1.Open;
  _Template := GetStrToStream(ADOQuery1.FieldByName('CLD_TEMPLATE1'));
  ADOQuery1.Close;
返回后的模板是否与生物特征模板不匹配,这在某些转换中是否丢失了一些值?我是初级编程
WideString
数据和
TMemoryStream
类,SQL Server数据库中的列类型为
Image


谢谢,

您的API文档对
GetStringBiomentric
函数有何说明?我非常怀疑生物特征数据是否是图像。它通常是一组数据点,更适合于一般BLOB字段类型。旁注:
ntext
text
、和
image
数据类型将在SQL Server的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。改用
nvarchar(max)
varchar(max)
varbinary(max)
。您的生物特征数据是字符串(即可读字符)吗?还要指定您的Delphi版本。细节很重要…GetStringBioCentric函数返回一个WideString,问题是系统已经存在,并且在数据库中使用此数据类型,我需要进行维护,但我可以尝试在另一个字段中记录数据以供测试。Delphi的版本是7,Delphi中堆栈上的字符串返回不可读的字符,总大小长度(#U模板)=384:'E'.$E'.$10'.$14'.'UF'''''.±)'.\35; 7''.\35; 2'PN 710字段,两者都正确工作,正确写入和接收值,但是,我在Delphi 6 update 2中制作了示例,应用程序是在Delphi 7中开发的,值是“最终确定的”“简言之,当它遇到#0时,在delphi 7中,似乎存在转换WideString的错误。。我被人发现了。写入图像字段之前的问题是否与此相关?没有安装更新,或者是否有其他方法解决此问题?