1

Я разрабатываю приложение WinForm для Windows Mobile 6.0 с C#, .NET Compact Framework 2.0 SP2 и SqlServer CE 3.1.Retreaving изображение, сохраненное на сервере 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 

Update

Проблема заключается

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

Очевидно, что должна быть больше, чем 0 байт (последний параметр).

+0

Нет, это не работает. – VansFannel

+0

Да, вы правы. Я изменил эту строку кода на: reader.GetBytes (0, 0, buffer, 0, imgSize); И это работает !!! – VansFannel

+0

Прохладный, рад, что это было легко, иногда эти вещи просто происходят :) – leppie

Смежные вопросы