1
저는 C# vs05 창에서 작업합니다. 내가 OLEDB에 .... IDataReader에 의한 이미지를 읽고 싶어 .... 내가 그것을 할 수있는 방법을 그때 내가 우는 방법IDataReader로 이미지를 읽는 방법
private IDataReader _reader;
public int GetInt32(String sFieldName)
{
return (_reader[sFieldName]==DBNull.Value)? (Int32) 0 :Convert.ToInt32(_reader[sFieldName]);
}
을 코드를 작성 데이터베이스 열 이름 학생증에서 int 값을 읽을 수 가정 내가 하나가 나를 도울 수 노호 코드
DataTable oTable = new DataTable();
oTable.Columns.Add("BoardImage");
DataRow oRow = oTable.NewRow();
oRow["BoardImage"] = oItem.BoardImage;
SQL= Insert into table oRow["BoardImage"];
Now i want to read image BY Idatareader ......to do that i write bellow code but i get error message "Parameter is not valid."
public Image GetImage(String sFieldName)
{
try
{
//MemoryStream stream = new MemoryStream();
//stream.Write(image, 0, image.Length);
//Bitmap bitmap = new Bitmap(stream);
byte[] imageData = null;
long byteSize = 0;
byteSize = _reader.GetBytes(_reader.GetOrdinal(sFieldName), 0, null, 0, 0); **//May be error occur here**
imageData = new byte[byteSize];
long bytesread = 0;
int curpos = 0, chunkSize = 500;
while (bytesread < byteSize)
{
// chunkSize is an arbitrary application defined value
bytesread += _reader.GetBytes(_reader.GetOrdinal(sFieldName), curpos, imageData, curpos, chunkSize);
curpos += chunkSize;
}
byte[] imgData = imageData;
MemoryStream ms = new MemoryStream(imgData); **//May be error occur here**
Image oImage = Image.FromStream((Stream)ms);
return oImage;
}
catch(Exception ex)
{
throw new Exception("Failed to get Image: " + ex.Message);
}
}
을 사용하여 이미지를 저장하려면? 어디에 버그입니다 .....이 문제
reader.GetBytes는 ms.Write가 int를 기다리는 동안 long을 반환합니다. 그래서'bytesRead'는 ms.Write에 대한 호출에서'int'로 형변환되어야합니다. – comecme
@comecme 실제로 당신은 정확합니다 (고정) - 우리가 * 아는 바보처럼 * 더 이상 2GB를 읽을 수는 없습니다 ... 아주 이상합니다! –
@Marc, 이미지의 크기가 확실하지 않은 경우 어떻게해야합니까? reader.GetBytes (col, 0, null, 0, 0)는 열에있는 바이트 수를 얻기위한 안전한 방법이지만 (문서화되어 있지는 않지만) 배열에 메모리를 할당 할 수 있습니까? – Mystic