9

基本上我试图给用户一个特定的密码,所以我可以测试系统上的一些功能,因为我只有我们的管理员帐户,我不能玩,我只是随机选择一个帐户,所以我可以做我的测试。所以这是我在一个更新尝试:如何使用特定值更新varbinary字段?

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=CAST('0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B' AS VARBINARY) 
WHERE LoginID=10947 

运行良好但在数据库中的代码看起来日本的一个和其他的语法看起来不错,但它不是我把在的价值,我想它使用我输入的确切值以便我可以登录。我该怎么做?我已经尝试了几种不同的演员阵容,并没有运气转换解决方案

+0

等待 - 这是为什么标记MySQL和SQL服务器?这是什么? – 2011-12-19 21:43:42

+0

道歉我现在已经修复了标签 – shicky 2011-12-19 21:58:57

回答

25

试试这个:

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B 
WHERE LoginID=10947 

(你不需要投一个字符串存储十六进制值到VARBINARY - 这是它在默认情况下正是,不带引号)

的问题是,你如何生成该密码十六进制值,并且你是否使用相同的编码来生成它,就像读取它一样?如果您打算将该数据转换回字符串,则需要一些代码才能完成此操作。这是我写的,做这样的功能:

CREATE FUNCTION ConvertBinary 
( 
    @value AS varbinary(max) 
) RETURNS VARCHAR(MAX) AS BEGIN 

    DECLARE @result AS varbinary(max), 
      @result2 AS varchar(max), 
      @idx AS bigint; 

    IF @value IS null 
     return null; 

    SELECT @result = @value; 
    SELECT @result2 = ''; 
    SELECT @idx = 1; 

    WHILE substring(@result, @idx, 1) != 0 AND @idx < len(@result) 
     BEGIN 
      SET @result2 = @result2 + cast(substring(@result,@idx,1) as char(1)); 
      SET @idx = @idx + 1; 
     END 

    RETURN @result2; 

END 

我不知道如何有帮助这将是对你,虽然,因为它是非常有可能的,无论应用程序使用这些字段是不同处理的值比这个功能预计。为了记录,此函数采用最初为utf-8字符串的varbinary值,并返回该字符串的varchar值。祝你好运!

+0

谢谢杰克正在做我的头!现在所有解决方案,只是需要删除口令上的引号:( – shicky 2011-12-19 21:58:23

2

由于您使用的2008年,试试这个:

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=CONVERT(VARBINARY(MAX), '0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B', 1) 
WHERE LoginID=10947 

http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx

+0

不幸的是,仍然是一样的,字符串被改变,所以我没有得到该字段中的已知密码。 – shicky 2011-12-19 21:56:30

相关问题