Comment insert une string contenant # 0 dans une colonne NVARCHAR () dans MSSQL?

Je suis sûr que cela a une solution très simple, mais j'ai épuisé mes ressources. J'ai besoin d'insert un tas de variables WideSsortingng qui peuvent contenir #0 dans une NVARCHAR(1024) dans MSSQL2k8. #0 est traité comme le terminateur de string quelque part dans la transition … Donc, quand je stocke #6'r'#0'abc' , seulement #6'r' est stocké. J'utilise TADOQuery . Que puis-je faire à ce sujet?


Voici le code que j'utilise:

 var S: ssortingng; 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; 

Si vous voulez stocker une string chiffrée par n'importe quel moyen qui pourrait avoir des valeurs nulles, encoder et décoder datatables chiffrées comme Base64 en utilisant les routines dans Soap.EncdDecd.pas (EncdDecd.pas dans les versions plus anciennes).

Et utilisez le encryption approprié, soit à partir de Microsoft CryptoAPI, soit à partir des implémentations Delphi natives telles que DCPCrypt .

Si vous stockez des passwords pour l'access à votre système, envisagez de les hacher (et de les saler) à la place. Évidemment, si ce sont des passwords pour se connecter à d'autres systèmes, vous ne pouvez pas le faire.

 var B64: ssortingng; begin B64 := EncodeSsortingng(#6'r'#0'abc'); ADOQuery1.Append; ADOQuery1S.Value := B64; ADOQuery1.Post; end; 

Si vous pouvez modifier le schéma, utilisez plutôt VARBINARY ou IMAGE. Ces types de champs sont conçus pour contenir des données binarys.

 create table MY_DATA ( FLD_1 varbinary(2048), FLD_2 image )