2009-06-02 7 views
2

데이터 유형이 varBinary 인 데이터베이스 필드가 있습니다. 이제 gridView에서 해당 데이터를 표시하려고합니다. 데이터베이스에varBinary 필드 데이터를 표시하는 방법

System.Byte[] 

값이 아닌

0x2C6D1A 

:하지만 난 출력을 얻고있다.

이 문제를 해결하는 방법을 알려주십시오.

답변

4

당신은 표시 목적으로하여 바이트 배열을 포맷 할 BitConverter 클래스를 사용할 수 있습니다 :

string forDisplay = 
    "0x" + BitConverter.ToString(yourByteArray).Replace("-", string.Empty); 

당신이 다음 string, BitConverter has a load of methods로 직접 변환 할 수없는 경우 다양한 종류의 바이트 배열로 변환 .

편집 ...

당신이 GridView 제어에 직접 일부 쿼리 결과를 결합하는 경우 다음 쿼리 자체가 VARCHARVARBINARY 열을 변환하는 것이 더 쉬울 수 있습니다

SELECT CONVERT(VARCHAR(MAX), your_varbinary_column, 1) AS for_display 
FROM your_table 

(참고 :이 변환 유형 - VARBINARY에서 VARCHAR까지 '0x1234AB' 형식으로 - SQL Server 2008에서만 올바르게 작동합니다. 이전 버전의 SQL Server는 저장소를 캐스팅했습니다. 문자 데이터에 직접 진 데이터)

+0

좀 더 구체적으로 말씀해주십시오. 죄송합니다.이 코드 줄을 어디에 추가해야하는지 이해할 수 없어 죄송합니다. 문자열 forDisplay = "0x"+ BitConverter.ToString (yourByteArray) .Replace ("-"string.Empty); ' –

0

명백한 가능, 아마 단지 루프 아무것도가없는 경우 :.이 클래스의 속성, 않는 TypeConverter을 만들 사소한 될 경우

public static string ToHexString(byte[] raw) 
    { // could also be an extension method 
     StringBuilder sb = new StringBuilder("0x", 2 + (raw.Length * 2)); 
     for (int i = 0; i < raw.Length; i++) 
     { 
      sb.Append(raw[i].ToString("X2")); 
     } 
     return sb.ToString(); 
    } 

이 표시 목적으로 표시하려면 [TypeConverter(typeof(HexConverter))]으로 속성을 표시하십시오.

class HexConverter : TypeConverter // untested 
    { 
     public override object ConvertTo(ITypeDescriptorContext context, 
      System.Globalization.CultureInfo culture, 
      object value, Type destinationType) 
     { 
      if (destinationType == typeof(string)) 
      { 
       return ToHexString((byte[])value); 
      } 
      return base.ConvertTo(context, culture, value, destinationType); 
     } 
    } 
+0

가장 좋은 방법은 무엇입니까? SQL 서버에서 DataGrid로 데이터를 바인딩 하시겠습니까? 사용자에게 파일을 업데이트 (기존 파일을 새 파일로 대체)하는 옵션을 제공해야합니다. 먼저 SQL Server에서 기존 파일을로드 한 다음 사용자에게 옵션을 제공하여 교체하거나 교체없이로드 할 수 있어야합니다. webapplication에? –

+0

@RehanMehdi는 전혀 상관없는 질문입니다. 난 그냥 개체 모델에 던져 버릴거야 ... –

+0

답장을 보내 주셔서 감사합니다. 서면으로 저를 도울 수 있습니까? 나는 객체 프로그래밍에 익숙하지 않다. 내 코드로 새 질문을 시작해야합니까? –

관련 문제