Bonjour,
Une fois n'est pas coutume, c'est moi qui demande de l'aide et en apelle à la solidarité inter-développeurs .

J'essaye d'accèder aux données d'un serveur MS SQL Server 8 en JDBC.
Les paramètres de connection, ont l'air bon, tout indique que la connection se fait bien, mais lorsque je récupère les données issues de ma requete, j'ai une SQLException qui est lancée, avec le message "La conversion de int en AsciiStream n'est pas prise en charge".
et voici la pile java :
Citation Envoyé par La machine virtuelle
com.microsoft.sqlserver.jdbc.SQLServerException: La conversion de int en AsciiStream n'est pas prise en charge.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.Column.throwConversionError(Unknown Source)
at com.microsoft.sqlserver.jdbc.Column.checkConvertsAsciiStream(Unknown Source)
at com.microsoft.sqlserver.jdbc.Column.checkGetAsciiStream(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getAsciiStream(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getAsciiStream(Unknown Source)
at enssib.interressenssib.model.Source.chercherRessources(Source.java:282)
at enssib.interressenssib.control.RechercheRessources.doGet(RechercheRessources.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:833)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
at java.lang.Thread.run(Unknown Source)
Ooh ! la belle pile !

voici le code qui pose problème (Source.java) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
String requeteRecherche = "SELECT "+this.champIdentifiant+" FROM "+this.nomObjetSource+" "+clauseWhere;
 
ResultSet res=this.execRequete(requeteRecherche);
String resultRecherche=new String("");
while(res.next())
    {
    	resultRecherche=resultRecherche+"<ressource>";
    	InputStream leResultatBrut=res.getAsciiStream(this.champIdentifiant);  // C'EST ICI QUE CA BUG
    	while(leResultatBrut.available()>0)
	{
    		resultRecherche=resultRecherche+formatter((char)leResultatBrut.read());
	}
    	resultRecherche=resultRecherche+"</ressource>\n";
    }
Le message d'erreur renvoyé laisse entendre que le driver jdbc de MS ne sait pas convertir un entier en flux ASCII, mais ça me paraît bizzare quand même !!!
L'ennui, c'est que je ne peux pas utiliser getInt() à la place de getAsciiStream() car le même code me sert à exploiter plusieures bases de données différentes avec des types de champs différents ...
De plus, en tapant le message d'erreur dans google, je ne trouve rien ! c'est étrange car d'habitude, pour un message d'erreur type, il y a des dizaines et des dizaines de personnes qui ont eu le même bug, mais là : rien !

Quelqu'un a-t-il une idée ???