我有字符串值項:如何在SQL Server中轉換爲二進制後得到的字符串返回在C#
TxtProductKey.Text has value "key"
編碼這個值
byte[] Key = Encoding.ASCII.GetBytes(TxtProductKey.Text.Trim());
將它保存在數據庫表中的數據類型的列binary(50) null
。
下表中的值如下:
0x6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
現在我試圖把它找回來的,我輸入的字符串值Key
byte [] TempKey = (byte[])LicenseInfo.Tables[0].Rows[0]["ProductKey"];
var newText = Encoding.ASCII.GetString(TempKey);
但我在得到結果newText
是:
k\0\0\0\0\0\00\
我在哪裏幹什麼有什麼問題?我希望您的建議
C#代碼在數據庫中保存的值:
Sqlconnection.Open();
SqlCommand Cmd = new SqlCommand("SpAddAttempts", Sqlconnection);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.Add("@Attempts", SqlDbType.Int).Value = Attempt;
Cmd.Parameters.Add("@Activate", SqlDbType.Bit).Value = Activate;
Cmd.Parameters.Add("@Key", SqlDbType.Binary).Value = Key;
Cmd.ExecuteNonQuery();
CloseConnection();
存儲過程:
ALTER PROCEDURE [dbo].[SpAddAttempts]
@Attempts INT,
@Activate BIT,
@Key BINARY
AS
BEGIN
UPDATE License
SET Attempts = @Attempts,
Activate = @Activate,
ProductKey = @Key
WHERE LicenseId = '1'
END
您沒有保存它是正確的。數據只有一個非零字節,它應該有三個字節(即'0x6B657900 ...') – dasblinkenlight
你可以這樣做,你可以在調試中看到關鍵字節數組的值是什麼?它進入數據庫之前。這個例子只顯示了db二進制數據中的一個字符 – farbiondriven
@dasblinkenlight你能告訴我錯誤嗎?我的保存代碼在我的文章中。 – john