1

我正在開發一個Windows Mobile 6.0的WinForm應用程序,包括C#,.NET Compact Framework 2.0 SP2和SqlServer CE 3.1。Retreving存儲在SQl服務器上的圖像CE 3.1

我有這個代碼不工作:

using (SqlCeDataReader reader = cmd.ExecuteReader()) 
{ 
    if (reader.Read()) 
    { 
     //read the signature from the database 
     long imgSize = reader.GetBytes(0, 0, null, 0, 0); 
     image= new byte[imgSize]; 
     reader.GetBytes(0, 0, image, 0, 0); 
    } 
} 

我覺得這是獲取存儲在包含圖像的字節數列中的所有數據的問題。

當我這樣做:

bitmapImage = new Bitmap(new MemoryStream(image)); 

我得到一個OutOfMemoryException。

但是,如果我使用TableAdapter來獲取圖像,它完美的作品。

我在做什麼錯了?

謝謝。

回答

1

試試這個:

var ms = new MemoryStream(image) 
bitmapImage = new Bitmap(ms); 
// dont close the memorystream 

更新

問題在於

reader.GetBytes(0, 0, buffer, 0, 0); 

顯然,這需要在長度(最後一個參數)大於0字節。

+0

不,它不起作用。 – VansFannel

+0

是的,你是對的。我已將該行代碼更改爲:reader.GetBytes(0,0,buffer,0,imgSize); 而且,它的工作! – VansFannel

+0

酷,很高興這很容易,有時這些事情只是發生:) – leppie