2013-03-20 17 views
11

szukam użyć podejście zapisywanie haseł, które wymaga zastosowania tablicy bajtów jak w tym postZapisz Tablica bajtów w serwerze sql

Więc jaki typ danych należy użyć w serwerze SQL, aby zapisać tablicę bajtów? i jak mogę przekazać i pobrać tablicę bajtów za pomocą SqlCommand?

Odpowiedz

19

Jeśli to zawsze będzie tą samą długość, a następnie binary(length) byłby odpowiedni. Jeśli ma być różna długość, użyj varbinary(maxlength).

binary and varbinary.

I, jak mówi @ p.s.w.g, przekazujesz go z kodu, umieszczając go w odpowiednim parametrze.

+0

+1 Tak. Dokładnie. –

+1

dla mnie, potrzebowałem 'varbinary (max)' –

3

Po prostu użyj byte[] w taki sam sposób jak dowolny inny parametr, określając SqlDbType.Binary jako typ parametru. Oto próbka C#

// Generate your password hash some way 
byte[] passwordHash = new byte[] { 0x0, 0x1, 0x2 ... }; 

... 

command.Parameters.Add("@passwordHash", SqlDbType.Binary); 
command.Parameters["@passwordHash"].Value = passwordHash; 

Lub jeśli wolisz VB.NET

' Generate your password hash some way 
Dim passwordHash As Byte() = New Byte() { &H0, &H1, &H2 ... } 

... 

command.Parameters.Add("@passwordHash", SqlDbType.Binary) 
command.Parameters("@passwordHash").Value = passwordHash 
+0

jest w porządku używać typu danych binarnych sql? podczas wyszukiwania w Google niektórych osób, które opowiadają o wykorzystaniu dużych plików binarnych, takich jak obrazy, czy zgadzasz się z tym? – user2155873

+0

@ user2155873 Użyj 'VARBINARY (MAX)' dla plików, które są dość duże lub mają różną długość. Dla skrótów hasła użyj 'BINARY (32)' (lub jak długo jest twój hasz). –

+1

@ user2155873 - biorąc pod uwagę, że możesz zadeklarować 'binary (5)', który przydziela pamięć na 5 bajtów, czy powiedziałbyś, że to było odpowiednie tylko do przechowywania dużego pliku? –

0

Nie wiem, ile to jest lat, ale polecam nvarchar (45) i Base64 32 bajty na ciąg znaków. Jest to standardowy sposób zapisywania hasza. Alternatywnie można zrobić nvarchar (64) i zapisać go jako ciąg szesnastkowy.

Powiązane problemy