iMa*_*ari 4 sql-server delphi ado sql-server-2008 delphi-xe2
我确信这有一个非常简单的解决方案,但我已经耗尽了我的资源.我需要插入一堆WideString可能包含在MSSQL2k8中#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;
Run Code Online (Sandbox Code Playgroud)
如果要存储通过任何可能包含NULL的方式加密的字符串,请使用Soap.EncdDecd.pas(旧版本中的EncdDecd.pas)中的例程将加密数据编码并解码为Base64.
并且DO使用适当的加密,可以是Microsoft CryptoAPI,也可以是任何本地Delphi实现,例如DCPCrypt.
如果要存储用于访问系统的密码,请考虑对它们进行散列(和腌制).显然,如果它们是连接到其他系统的密码,则无法做到这一点.
var
B64: string;
begin
B64 := EncodeString(#6'r'#0'abc');
ADOQuery1.Append;
ADOQuery1S.Value := B64;
ADOQuery1.Post;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |