lolo70000
Messages postés8Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention20 juin 2006
-
15 juin 2006 à 12:23
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 2007
-
15 juin 2006 à 13:44
Bonjour tt le monde !!!
alors je veux recuperer une image apartir de ma base de donnee : voici mo code :
Connexion
cnx =
new
Connexion();
MemoryStream stream =
new
MemoryStream();
cnx.getConnexion().Open();
SqlCommand command =
new
SqlCommand(
"select image from annonces_ventes_encheres where id = 1", cnx.getConnexion());
try{
byte[] image=(
byte[])command.ExecuteScalar();
stream.Write(image, 0, image.Length);
Bitmap bitmap =
new
Bitmap(stream);Response.ContentType =
"image/gif";DGI.Image.Save(Response.OutputStream,
ImageFormat.Gif);}
catch (System.Data.SqlClient.
SqlException SQL){
Response.Write(SQL.ToString());
}
finally{
cnx.getConnexion().Close();
stream.Close();
}
mais quan j'excute mon code il me genere l'exception suivante :
Unable to cast object of type 'System.DBNull' to type 'System.Byte[]'.
A voir également:
System.byte[]
Unable to cast object of type 'system.dbnull' to type 'system.byte[]'. - Meilleures réponses
'Unable to cast object of type 'system.dbnull' to type 'system.string'.' - Meilleures réponses
lolo70000
Messages postés8Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention20 juin 2006 15 juin 2006 à 13:24
Non jai verifier et jai ajouter une ligne pr verifier s i c null ou pas voila :
Object
OBJ = command.ExecuteScalar();
if ( OBJ!=
null) {
byte[] image1 = (
byte[])(command.ExecuteScalar());}
jai debeguee et a ma grande surprise il est rentre ds le bloque de if cad que logjet nest pas null
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 20073 15 juin 2006 à 13:44
Bonjour lolo70000,
À mon avis, il ne faut pas tester si la valeur de retour de ExecuteScalar() est non-nulle (avec OBJ != null) mais si c'est un objet de type DBNull (avec OBJ is System.DBNull).
En effet, DBNull est un type spécialement conçu pour représenter l'absence de données dans une base de données. Donc si ta requête ne trouve rien, elle renvoie un objet DBNull, ce qui explique d'une part pourquoi le test (OBJ != null) est vrai (car OBJ contient une valeur, de type DBNull) ; et d'autre part, pourquoi le cast en byte[] n'est pas possible.