Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Blob et mysql

3 réponses
Avatar
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..

3 réponses

Avatar
Stephane Zuckerman
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)

Avatar
Pif
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 !



Avatar
Frédéric Lachasse
"Pif" wrote in message news:d5suon$22e$
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