C#의 DataRow에서 바이트 배열을 어떻게 읽나요?
-
08-07-2019 - |
문제
나는 DataSet
와 DataTable
하나의 항목을 올바르게 채우는 것입니다. DataRow
통해 TableAdapter
.
다음과 같은 코드를 사용하여 DataRow에서 데이터를 가져올 수 있습니다.
dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];
DataFile 유형이라는 또 다른 열이 있습니다. varbinary(max)
.
동일한 열의 데이터를 가져오려고 하면 DataRow
위와 같이 나는 아무것도 얻지 못합니다.
byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];
이 위치에 중단점을 넣으면 dataFileDataRow와 ItemArray 속성을 살펴보고 이진 데이터가 ItemArray의 위치 5에 있는지 확인할 수 있습니다.
해당 인덱스를 사용하여 ItemArray에 직접 액세스하려고 시도했지만 바이트 배열이 fileFromDatabase 변수에 복사되지 않습니다.
또한 내 시계에 fileFromDatabase를 추가하면 다음 오류가 발생하는 것으로 나타났습니다.
"'fileFromDatabase'라는 이름이 현재 컨텍스트에 존재하지 않습니다."
실행은 여전히 fileFromDatabase의 정의와 동일한 블록에 있으므로 어떻게 컨텍스트에서 벗어날 수 있는지 이해할 수 없습니다.
Visual Studio의 구성을 디버그 대신 릴리스로 설정했습니다.이로 인해 fileFromDatabase를 검사할 때 찾고 있던 실시간 디버깅 정보가 표시되지 않았습니다.릴리스에서 디버그로 전환한 후 이제 시계에서 변수를 볼 수 있고 위 코드가 올바르게 작동하는지 확인할 수 있습니다.
해결책
위의 코드는 작동합니다. 릴리스가 아닌 디버그용으로 컴파일하도록 디버거를 설정했는지 확인하세요.
키스