Buon pomeriggio,
mi sto avvicinando a java e sto provando un piccolo programmino che si colleghi ad un db my sql ma mi da un errore sul set di caratteri. l'errore che mi da è questo :
java.sql.SQLException: Can not call getNString() when field's charset isn't UTF-8
at com.mysql.jdbc.JDBC4ResultSet.getNString(JDBC4Resu ltSet.java:218)
at testdb.connessione.eseguiQuery(connessione.java:65 )
at testdb.Test.main(Test.java:23)
le 2 classi del programma sono queste :
connessione.java
test.javacodice:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package testdb; /** * * @author daniele */ import java.sql.*; import java.util.*; public class connessione { private String nomeDb; //nome del database private String nomeUtente; //nome utente private String pwdUtente; //password utente private boolean connesso; //stato connessione private Connection db; //connessione con il database private String errore; //raccoglie info su eventuali errori public connessione(String nomeDb, String nomeUtente, String pwdUtente) //costruttore connessione { this.nomeDb = nomeDb; this.nomeUtente = nomeUtente; this.pwdUtente = pwdUtente; connesso=false; errore=""; } public boolean connetti() { connesso=false; try { Class.forName("com.mysql.jdbc.Driver"); db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDb + "?user=" + nomeUtente +"&password=" + pwdUtente); connesso=true; } catch(Exception e) { errore=(e.getMessage()); System.out.println(errore); } return connesso; } public Vector eseguiQuery(String query) { Vector vettore =null; String [] record; int colonne=0; try { Statement stmt = db.createStatement(); ResultSet rs = stmt.executeQuery(query); vettore = new Vector(); ResultSetMetaData rsmd = rs.getMetaData(); colonne = rsmd.getColumnCount(); while(rs.next()==true) { record=new String[colonne]; for(int i=0;i<colonne;i++) record[i] = rs.getNString(i+1); vettore.add((String[]) record.clone()); } rs.close(); stmt.close(); } catch(Exception e) { e.printStackTrace(); } return vettore; } }
qualcuno sa darmi una mano? ho provato a settare tutte le tabelle di mysql in UTF8 ma senza alcun risultato...codice:/** * * @author daniele */ import java.util.*; public class Test { public static void main(String args[]) { connessione db = new connessione("vetturaSostitutiva","root","admin"); if(!db.connetti()) { System.out.println("Errore di connessione"); System.exit(0); } Vector vettore = db.eseguiQuery("select * from cliente"); int i; i = 0; while ( i<vettore.size() ) { String[] record = (String[]) vettore.elementAt(i); System.out.println("Record numero " + (i+1) ); for (int j=0; j<record.length; j++) { System.out.println( record[j] ); i++; } } } }

Rispondi quotando