2014-01-23 2 views
0

코드에서 저장 프로 시저를 실행해야합니다. 입력 매개 변수 중 하나는 테이블의 rowVersion입니다. rowVersion은 바이트 배열 ({0, 0, 0, 0, 0, 0, 13, 191}이며 db는 0x0000000000000DBF)입니다. 그래서 rowVersion을 다음과 같이 추가하면 :C에서 바이트 배열을 16 진수로 변환 #

cmd.Parameters.AddWithValue("@myPKRowversion", 0x0000000000000DBF); 

sp가 작동합니다.

uint a = 0x0000000000000DBF; 
cmd.Parameters.AddWithValue("@myPKRowversion", a); 

또는 내가 좋아하는 문자열로 바이트 배열로 변환하는 경우 : :하지만 여기처럼 추가 해요 때

string a = "0x0000000000000DBF"; 
cmd.Parameters.AddWithValue("@myPKRowversion", a); 

내 SP가 작동하지 않습니다. 내 sp 작업을 수행하려면 어떻게해야합니까?

+2

주,하지가 8 –

+1

은 할 수 없습니다 실제로 이것을 테스트하지만 0x0000000000000DBF는 UInt32가 아니라 Int32로 IDE에서 감지됩니다. 그래서 당신의 작업 예제와 첫 번째 비 작동 예제는 동일하지 않습니다. uint 대신 int를 사용하면 작동합니까? – Tim

+0

JonSkeet이 제안한 @Tim 솔루션이 제 코드에서 잘 작동합니다. 그러나 어쨌든 당신도 옳습니다. uint를 Int32로 변경하면 sp는 내게도 오류를주지 않습니다! – Sasha

답변

3

을 바이트 배열으로 추가하는 것이 좋습니다. 예를 들어 :

byte[] bytes = new byte[] { 0, 0, 0, 0, 0, 0, 13, 191 }; 
cmd.Parameters.Add("@myPKRowVersion", SqlDbType.Binary).Value = bytes; 

당신이 바이트를 지정하려는 경우는, 가장 자연스러운 형태가 바이트 배열 ... uint`는 4 바이트를 나타내는`것을

+0

Thnx, 작동 중입니다. – Sasha