Exception de longueur de string ou de tampon non valide

ceci fait partie de mon code mon code:

Connection dbcon=null; Statement stm; ResultSet rs; ResultSetMetaData metadata; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (java.lang.ClassNotFoundException e) { System.out.print("ClassNotFoundException: "); System.out.println(e.getMessage()); } try { dbcon = DriverManager.getConnection("jdbc:odbc:Bus_Info"); stm = dbcon.createStatement(); rs = stm.executeQuery("select distinct number, name, min(Stop_Times.departure_time), max(Stop_Times.departure_time) from Routes, Stop_Times, Stops, sortingps, Calendar where(stops.stop_name like'ΣΟΝΙΑ' and Stops.stop_id=Stop_Times.stop_id and Stop_Times.sortingp_id=sortingps.sortingp_id and sortingps.route_id=Routes.route_id and sortingps.direction='outbound' and sunday=1 and Calendar.service_id=sortingps.service_id)group by number, name"); metadata = rs.getMetaData(); int columns = metadata.getColumnCount(); System.out.printf("%s\t%s\t%s\t%s", "ΑΡΙΘΜΟΣ ΓΡΑΜΜΗΣ", "ΟΝΟΜΑ ΓΡΑΜΜΗΣ", "ΧΡΟΝΟΣ ΔΥΙΕΛΕΣΗΣ ΠΡΩΤΟΥ ΔΡΟΜΟΛΟΓΙΟΥ", "ΧΡΟΝΟΣ ΔΙΕΛΕΥΣΗΣ ΤΕΛΕΥΤΑΙΟΥ ΔΡΟΜΟΛΟΓΙΟΥ"); System.out.println(); while(rs.next()) { System.out.printf("%s\t%s\t%s\t%s\n", rs.getSsortingng("number"), rs.getSsortingng("name"), rs.getSsortingng("min(Stop_Times.departure_time)"), rs.getSsortingng("max(Stop_Times.departure_time") ); } rs.close(); stm.close(); dbcon.close(); } catch (SQLException e) { System.out.print("SQLException: "); System.out.println(e.getMessage()); } 

le problème ici est que quand je veux afficher deux colonnes ou plus, j'obtiens ce message:

"[Microsoft] [Gestionnaire de pilotes ODBC] Chaîne non valide ou exception de longueur de tampon"

Qu'est-ce que je fais mal? Merci d'avance!

Je voudrais commenter mais je n'ai pas assez de réputation.

Cela ne devrait pas avoir à faire avec le nombre de colonnes que vous essayez d'imprimer. Il n'aime pas le format d'au less une des strings que vous allez chercher. Essayez d'imprimer seulement la colonne de nom et voyez si cela fonctionne. Si non, alors il n'est probablement pas décodé correctement.

Si c'est le cas, allez à votre administrateur de source de données ODBC, select le pilote approprié à partir du DSN user ou du DSN système, click Configurer et modifiez le encoding. Si cela ne fonctionne pas, essayez de mettre à jour / dégrader votre pilote. (J'ai eu le même problème et la mise à jour de mon 4D Driver de v13 à v14 l'a corrigé).

Ceci est un bug Java, mise à jour vers Java 1.7.60 au less

J'avais ce problème avec la mise à jour 64 de Java 7 64. Il fonctionne pour moi sur une machine 32 bits différente utilisant la même version du JRE. Cela pourrait fonctionner pour passer au JRE 32 bits.

Le pilote ODBC Access 2010 32 bits ne peut pas être installé si Office 64 bits est installé. Par conséquent, je ne peux pas essayer la machine virtuelle Java 32 bits sur la même machine.