1

Je développe une application WinForm pour Windows Mobile 6.0 avec C#, .NET Compact Framework 2.0 SP2 et SqlServer CE 3.1.Retrait d'une image stockée sur SQl Server CE 3.1

Je possède ce code qui ne fonctionne pas:

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); 
    } 
} 

Je pense qu'il ya un problème d'obtenir toutes les données stockées sur la colonne contenant octets de l'image.

Quand je fais cela:

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

Je reçois un OutOfMemoryException. Mais si j'utilise un TableAdapter pour obtenir l'image, cela fonctionne parfaitement.

Qu'est-ce que je fais mal?

Merci.

Répondre

1

Essayez ceci:

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

Mise à jour

Le problème réside

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

Il est clair qu'il doit être plus de 0 octets (dernier paramètre).

+0

Non, cela ne fonctionne pas. – VansFannel

+0

Oui, vous avez raison. J'ai changé cette ligne de code à: reader.GetBytes (0, 0, buffer, 0, imgSize); Et, ça marche !!! – VansFannel

+0

Cool, heureux que c'était facile, parfois ces choses arrivent juste :) – leppie