Requete SQL lancee depuis prog Java: Date = [b@e8a0cd au lieu de 2009-10-02 (enc

Signaler
Messages postés
48
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
24 décembre 2009
-
kirua12
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
-
Bonjour


Voila si quelqu'un peut m'aider....
J'ai créé un prog java qui lit une base mysql et rapatrie les données dans une jtable. La version de mysql a changé il y a peu de temps et l'encodage est passé en UTF8. Depuis mes dates apparaissent en [b@e8a0cd au lieu d'un format de date classique, meme chose pour les chiffres...
on dirait du byte non?

ma methode de result:
objects[i]=_rs.getObject(i+1);

donc ca me rapatrie des objects.
Jai bien essayé le (String)objects[i] et le objects[i].toString mais le compilateur me jette. Jmetais dit que en convertissant en String peut etre le probleme disparaitriat.

Le truc la requete lancee dans une console sql marche bien... et cest la meme requete que lance mon prog!!


quelquun a une idee? ce serait cool....
Ps: mon prog na pas changé (il est dans mes posts precedents)

A+

(_.:~:._)

13 réponses

Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
94
Salut,;

As-tu essayé de formatter la date récupèrée avec un SimpleDateFormat ?
______________________________________
DarK Sidious
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
Salut,

il est impossible que le compilo te jette sur l'appel de la méthode toString().
Il y a dû avoir autre chose qui a changé car je vois pas pourquoi suite au changement d'encoding ça te renvoi un tableau de byte au lieu d'une String (si String avant tu avais)
Enfin si tu sais que tu récupères une String, pourquoi tu ne fais pas getString(...) tout simplement ?
Messages postés
48
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
24 décembre 2009

Bonjour a tous!


Kirua12: "Il y a dû avoir autre chose qui a changé car je vois pas pourquoi suite au changement d'encoding ça te renvoi un tableau de byte au lieu d'une String (si String avant tu avais)"
>> ben javoue je sais pas, ce nest pas moi qui ai fait cette install (maj de mysql). Ce ke je voie cest ke cest code en utf8, donc dapres ce que jai trouve sur le net ce serait code sur 32bits.
Maintenant ce qui est trop bizarre, jai cette meme chaine de caracteres chelou "[b@e8a0cd " pour a la fois des dates et des chiffres (1, 2....)

Bizarre bizarre...

ma jtable se remplit avec des objects, donc jai voulu faire un toString sur les objects jme fais jeter par le compilateur...

DarkSidious: merci pour ta reponse, jvais tenter mais le souci est sur tout ce qui comporte des chiffres (dates et chiffres)=> "[b@e8a0cd "

donc si quelquun a une idee...
jvais tenter le simpledateformat comme me la conseille Darksidious, mais a mon avis le probleme est plus global (date ET chiffre)...
Jvais tenter de forcer l'affichage en iso et voir ce ke ca donne. Je ferai un post pour dire ce ke ca donne.

++
(_.:~:._)
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
Quel est le type des colonnes ? c'est pas passé en blob ou autre joyeuseté de ce genre ?
Messages postés
48
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
24 décembre 2009

salut kirua12, et merci pour ta reactivite!

et cest quoi "blob"?

(_.:~:._)
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
94
Salut,

En effet, c'est très bizarre que les nombres soient affectés par un passage en UTF-8 : l'encodage ne modifie que les champs de type TEXT ou BLOB, ou autre, pas les nombres ou les dates !

Un type blob, c'est un chemp texte long, qui peut contenir du binaire (des images par exemple).
______________________________________
DarK Sidious
Messages postés
48
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
24 décembre 2009

curieusement date cest en format %Y-%m-%d
le truc trop chelou, pour un meme type (ex date ou ex int(11), des objets en SQL d'un meme type vont apparaitre en clair dans mon rpogramme et en "|=[b@...." dans d'autres cas.
Et quand cetait en Latin1 mon prog marchait nickel (tout en clair!!!)

Le proprietaire de la base de données a du faire une manip expres pour m'empecher de lire ces données, mon prog le gene il voudrait sen doute bien vendre un prog similaire mais dommage moi je lai fait et il est gratos :)

a mon avis ca doit etre un truc comme ca, mais comment diable lire ces foutues données?!

(_.:~:._)
Messages postés
48
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
24 décembre 2009

ouais, jai verifie, parmi mes champs en clair, jai des type int(11), et parmi mes champs "codés" jai aussi du int(11), donc l'encodage n'affecte pas un type de données.

Aucune date ne saffiche en clair, alors qu'avant ca fonctionnait!
L'editeur de la base de données sait ke je fais des tris sur les dates, il a du faire une manip pour m'empecher de bosser.

Du coup, jvais tenter de decoder ca, jsais pas trop comment! Tout ca pour gagner quoi jvous le demande? Ca sert a quoi de faire chier le monde? Tout ca parce ke jai developpe un petit client java ki accede a sa base de données, et comme cest pas lui ki a eu l idee, ca y est on me bloque!


(_.:~:._)
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
Si tu fais un simple select sans passer par Java, tu lis bien tes données ?
Tu peux nous montrer ton code ?
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
94
Salut,

tomski : il faut pas croire que le monde est tout beau tout rose : tu critique le gars qui protège sa base, ok, mais est-ce que tu as bien le droit d'y accèder ? Car qui te dit que ton programme est légal ?
______________________________________
DarK Sidious
Messages postés
48
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
24 décembre 2009

Bonjour darksidious mon enterprise a payer la licence annuelle pour la BDD et Le client que Le proprio de la BDD nous fournit. Son client ne refletant pas tout ce quon voit dans la base en mode console ( sqlyog) ET ne permettant pas lexport vers excel alors que pour nos stats cest crucial et dailleurs on leur a demande cettd evol mais cest reste lettre morte. Bref j'ai ecrit mon propre prog en java afin dexecuter la requete que javais besoin (select) et qui supporte la copie dans excel. Le proprio de la BDD est au courant mais ca a du Le gaver ke je sous capable de faire ca avec un temps dexecution 10 fois plus rapide au bas mot. Je precise ke cette societe recoit Les infos de sa BDD de la part dun operateur telephonique pour lequel nous sommes prestataires. Bref donc comme cest loperateur telephonique qui balance ses infos dans la BDD de lentreprise qui nous loue sa BDD et comme on travaille pour cet operateur telephonique et kon a une obligation de fournir DES stats donc oui ce ke j'ai fait est legal et ki plus est sur ordre de mon patron. Je suis actuellement en conge formation donc normalement j'ai pas a retourner a la boîte. Mais comme mon boss est trop emmerde et ke personne dautre na su quoi faire bref ils mint rapelle. Sauf ke komme j'ai dit cest un truc fait expres a mon Avis. Parce que bizarrement cest pas tous Les objets dun meme type ki bug mais bien DES dates et DES quantites. Ki nous sont utiles. Je precise ke la meme requete lancer en console fonctionne. Et mon prog fonctionnait avant la maj. Donc cest ni une erreur de code de ma part puiske ca marchait tres bien avant ni meme une erreur de syntaxe SQL puisque ka requete na pas change et sexecute tjs en console. Vous allez me dire j'ai ka lancer la requete dans la console Mais mon prog a lavantage de construire dynamiquement la requete. Voilà est ce que je vous ai comvaincu parce que la vraiment jsais pas koi faire. A part se plaindre a la boîte de BDD ki jute tout ce kelle veut kelle a rien fait pour me bloquer. Mais biensur.
(_.:~:._)
Messages postés
48
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
24 décembre 2009

salut!


voila, ou jen suis:

String[] mb;
Charset charset = Charset.forName("UTF-8");
for (int i=0;i<tb.getRowCount();i++){
try{
byte[] ba = getb(model.getValueAt(i,13));
getb(model.getValueAt(i,13));
stext[i] = new String(mb, charset);
stext[i] = new String(ba, charset);
model.setValueAt(stext[i], i, 13);
}catch(Exception e){
System.out.println("e= "+e);
}//end try
}//end for


public byte[] getb(Object obj) throws java.io.IOException{
System.out.println("in byte[]");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
oos.flush();
oos.close();
byte[] d = bos.toByteArray();
System.arraycopy(d, 0, mb, 0, data.length);
return mb;

}

si kelkun peut maider dans la derniere ligne droite, car helas l'appel de getb lance une NullPointerException....

ce serait super cool


(_.:~:._)
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
question bête : tu as initialisé ton tableau mb ?