Blob et mysql

Le
Pif
Bonjour, je crois que je vais mettre du temps pour survivre dans la
jungle de mysql

J'ai chopé le code suivant qui permet normalement de récupérer un blob
dans une table SQL :


InputStream blobStream=rs.getBinaryStream("str");
DataInputStream dis=new DataInputStream(blobStream);
byte[] blobvalue=new byte[100000];
dis.readFully(blobvalue);
System.out.println(new String(blobvalue));
dis.close();

systématiquement, j'ai une Exception EOF à la ligne du dis.readFully
le nom de mon champ est pourtant bon, il contient bien une valeur non
nulle, et j'ai bien un rs en cours non nul

quelqu'un peut il m'expliquer ou est mon erreur
Est-ce un problème de codage des caractères ? Existe-t-il une facon plus
légère de récupérer le contenu d'un blob ?

merci d'avance !


NB ; je sais qu'iil ne faudrait pas utiliser un blob mais c'est pas moi
qui ait fait la base , et je rale assez, c'est meme pas un informaticien
on dirait..
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Stephane Zuckerman
Le #192765
NB ; je sais qu'iil ne faudrait pas utiliser un blob mais c'est pas moi
qui ait fait la base , et je rale assez, c'est meme pas un informaticien
on dirait..


Je ne sais pas résoudre ton problème, mais juste pour dire, si la donnée à
stocker n'est pas "human readable", le blob se justifie tout à fait...

--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)

Pif
Le #192764
NB ; je sais qu'iil ne faudrait pas utiliser un blob mais c'est pas moi
qui ait fait la base , et je rale assez, c'est meme pas un informaticien
on dirait..



Je ne sais pas résoudre ton problème, mais juste pour dire, si la donnée à
stocker n'est pas "human readable", le blob se justifie tout à fait...

elle est parfaitement human readable ! c'est justement ca qui est domage !



Frédéric Lachasse
Le #192663
"Pif"
Bonjour, je crois que je vais mettre du temps pour survivre dans la jungle
de mysql...

J'ai chopé le code suivant qui permet normalement de récupérer un blob
dans une table SQL :


InputStream blobStream=rs.getBinaryStream("str");
DataInputStream dis=new DataInputStream(blobStream);
byte[] blobvalue=new byte[100000];
dis.readFully(blobvalue);
System.out.println(new String(blobvalue));
dis.close();

systématiquement, j'ai une Exception EOF à la ligne du dis.readFully ...
le nom de mon champ est pourtant bon, il contient bien une valeur non
nulle, et j'ai bien un rs en cours non nul...

quelqu'un peut il m'expliquer ou est mon erreur ...
Est-ce un problème de codage des caractères ? Existe-t-il une facon plus
légère de récupérer le contenu d'un blob ?

merci d'avance !


D'abord, l'erreur: readFully() remplit le buffer (ici 100000 octets). Si ton
blob est plus petit, c'est une erreur (EOF).

Plusieurs solutions possibles. une des plus simple:

Blob blob = rs.getBlob();
byte[] blobvalue = blob.getBytes(0, blob.length());

--
Frédéric Lachasse - ECP86

Poster une réponse
Anonyme