Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 19/05/2011 14:25:48
Ca marche bien.
Merci à vous 2.
Le problème venait donc de la version du driver que j'utilisais et d'un conflit avec d'autres driver présent dans ma librairie, une fois enlevé du répertoire plus de conflit donc ca fonctionne normalement.
#2 Re : Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 19/05/2011 12:10:25
Bon j'ai remis le driver 9.0, avec la configuration de base (bytea='hex') et ça marche!
Je comprend pas pourquoi cela ne marchais pas avant.
En fait j'avais plusieurs version du driver dans mon répertoire 'lib', j'ai tout enlevé physiquement sauf la dernière version et ca marche.
Je vous confirme ça quand même en testant cette après midi.
#3 Re : Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 19/05/2011 11:43:33
Sinon, le lien fonctionne, vous avez des restrictions pour l 'accès au web?
Ici : http://java.developpez.com/faq/jdbc/?pa … nfosDriver il y a un bout de code pour récupérer les informations du Driver. Pourriez-vous l'exécuter?
Merci.
voilà le résultat :
----------------------------------------------------------------------------------------------------------
Driver class = class org.postgresql.Driver v8.0
Prop name = PGDBNAME
Prop description = Database name to connect to; may be specified directly in the JDBC URL.
Prop value = null
Prop name = user
Prop description = Username to connect to the database as.
Prop value = null
Prop name = PGHOST
Prop description = Hostname of the PostgreSQL server; may be specified directly in the JDBC URL.
Prop value = null
Prop name = PGPORT
Prop description = Port number to connect to the PostgreSQL server on; may be specified directly in the JDBC URL.
Prop value = null
Prop name = password
Prop description = Password to use when authenticating.
Prop value = null
Prop name = protocolVersion
Prop description = Force use of a particular protocol version when connecting; if set, disables protocol version fallback.
Prop value = null
Prop name = ssl
Prop description = Control use of SSL; any nonnull value causes SSL to be required.
Prop value = null
Prop name = sslfactory
Prop description = Provide a SSLSocketFactory class when using SSL.
Prop value = null
Prop name = sslfactoryarg
Prop description = Argument forwarded to constructor of SSLSocketFactory class.
Prop value = null
Prop name = logLevel
Prop description = Control the driver's log verbosity: 0 is off, 1 is INFO, 2 is DEBUG.
Prop value = null
prop choice 0 = 0
prop choice 1 = 1
prop choice 2 = 2
Prop name = allowEncodingChanges
Prop description = Allow the user to change the client_encoding variable.
Prop value = null
Prop name = prepareThreshold
Prop description = Default statement prepare threshold (numeric).
Prop value = null
Prop name = charSet
Prop description = When connecting to a pre-7.3 server, the database encoding to assume is in use.
Prop value = null
Prop name = compatible
Prop description = Force compatibility of some features with an older version of the driver.
Prop value = null
prop choice 0 = 7.1
prop choice 1 = 7.2
prop choice 2 = 7.3
---------------------------------------------------------------------------------------------------------------
#4 Re : Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 19/05/2011 11:32:40
Pour aider au diagnostic, pouvez-vous passer le bytea_output à 'escape' dans le postgresql.conf ? (et recharcher la configuration bien sûr).
Si votre problème disparait, il est probable que vous n'avez pas la bonne version du driver (le format de sortie des champs bytea a changé avec la 9.0, il faut un driver capable de le gérer).
Bon ça fonctionne bien avec ce changement dans la conf. Est-ce que cette solution, d'après vous, est acceptable ou bien il faut que je cherche dans la version du driver?
#5 Re : Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 19/05/2011 11:11:31
voici le code qui transforme mon tableau de byte en "fichier" :
-----------------------------------------------------
File generate = new File(dir + "/", nom);
generate.createNewFile();
DataOutputStream out = new DataOutputStream(new FileOutputStream(generate));
out.write(docBytes);
out.close();
-----------------------------------------------------
#6 Re : Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 19/05/2011 11:09:23
non je n'en ai qu'un, j'ai essayé différentes versions du driver mais le problème persiste.
#7 Re : Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 19/05/2011 10:30:39
Bonjour et merci de vous intéresser à mon problème.
@flo: je n'ai pas accès au lien que tu as donné.
Sinon la version de mon driver = postgresql-9.0-801.jdbc4.jar
et la version de la base = postgre 9.0
code avant la requete :
-----------------------------------------------------------------------------------------------
1- instanciation du driver = Class.forName("org.postgresql.Driver");
2- connection à la base = DriverManager.getConnection("proxool.consultation");
-----------------------------------------------------------------------------------------------
et au niveau de la recuperation :
-----------------------------------------------------------------------------------------
String requete = "SELECT NOM_DOCUMENT, DOC FROM " + TABLE_DOCS_ATTACHES + " WHERE " +
ID + " = " + id + " AND " +
DATE_FIN + " IS NULL;";
GestionBd connexion = ConnexionPoolJDBC.getPoolConnexionJDBC().getConnexion(new Boolean(false),login);
try {
ResultSet resultat = connexion.executeRequete(requete);
resultat.next();
byte[] docBytes = resultat.getBytes("DOC");
}
---------------------------------------------------------------------------------------------------------
voila mais je suis pas sur que cela vienne du code.
Merci en tout cas de te pencher sur ça.
Julien
#8 Java » Problemes lecture/ecriture getBytes et bytea avec postgresql » 18/05/2011 10:07:20
- aldo
- Réponses : 13
Bonjour,
J'ai un soucis dans la récupération d'une colonne de bytea provenant d'une base postgresql.
En effet j'insere l'element grace au code suivant :
---------------------------------------------------------------------------------------
PreparedStatement ps = connexion.getConnection().prepareStatement(requete);
ps.setBytes(1,currentLine.getBytes());
---------------------------------------------------------------------------------------
ici mon currentLine.getBytes() correspond bien au string courant.
L'élément est correctement inséré dans la base de données.
Puis au moment de la recuperation en base de cet element :
---------------------------------------------------------------------------------------
byte[] docBytes = resultat.getBytes(1);
---------------------------------------------------------------------------------------
ou 1 correspond a la colonne souhaitée, le tableau de bytes est different par rapport au currentLine.getBytes() vu plus haut. Donc le string généré est différents.
Je ne voit pas pourquoi cette difference existe, d'autant que je me suis inspiré d'un tutoriel postgresql/java.
Par exemple pour la chaine de caractere "hehohahihuhy" :
en entrée mon tableau de bytes = [104, 101, 104, 111, 104, 97, 104, 105, 104, 117, 104, 121, 47, 110]
et en sortie = [56, 54, 53, 54, 56, 54, 102, 54, 56, 54, 49, 54, 56, 54, 57, 54, 56, 55, 53, 54, 56, 55, 57, 50, 102, 54, 101]
Est-ce que quelqu'un a deja rencontré ce type de problème?
Merci d'avance
Pages : 1