4

これには非常に簡単な解決策があると確信していますが、リソースを使い果たしました。MSSQL2k8 の列にWideString含ま#0れている可能性のある一連の変数を挿入する必要があります。トランジションのどこかで文字列ターミネータとして扱われます...したがって、 を保存すると、 のみが保存されます。を使用しています。これについて何ができますか?NVARCHAR(1024)#0#6'r'#0'abc'#6'r'TADOQuery


私が使用するコードは次のとおりです。

var
  S: string;
begin
  S := #6'r'#0'abc';
  ADOQuery1.Append;
  ADOQuery1S.Value := S;
  { At this point, S = #6'r'#0'abc' and ADOQuery1S.Value = #6'r';}
  ADOQuery1.Post;
end;
4

2 に答える 2

5

NULL を含む可能性がある何らかの手段で暗号化された文字列を保存する場合は、Soap.EncdDecd.pas (古いバージョンでは EncdDecd.pas) のルーチンを使用して、暗号化されたデータを Base64 としてエンコードおよびデコードします。

また、Microsoft CryptoAPI またはDCPCryptなどのネイティブ Delphi 実装のいずれかから、適切な暗号化を使用してください

システムにアクセスするためのパスワードを保存している場合は、代わりにパスワードをハッシュ (およびソルティング) することを検討してください。明らかに、それらが他のシステムに接続するためのパスワードである場合、それはできません。

var
  B64: string;
begin
  B64 := EncodeString(#6'r'#0'abc');
  ADOQuery1.Append;
  ADOQuery1S.Value := B64;
  ADOQuery1.Post;
end;
于 2012-10-23T11:06:37.110 に答える
2

スキーマを変更できる場合は、代わりに VARBINARY または IMAGE を使用してください。これらのフィールド タイプは、バイナリ データを保持するように設計されています。

create table MY_DATA ( FLD_1 varbinary(2048), FLD_2 image )
于 2012-10-24T10:24:41.253 に答える