-
[jsp] jdbc + db
Premettendo che uso mysql 5 e driver jdbc mysql-connector-java-3.1.10-bin.jar ho creato un db e un file di test per vedere se il tutto funziona.
Questo è il codice di test
<html><head></head><body>
<%@ page language="java" import="java.sql.*" errorPage="" %>
<%
Connection conn = null;
Statement stmt = null;
String DBUrl = "jdbc:mysql:///museum";
String DBuser = "root";
String DBpass = "";
Class.forName("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection(DBUrl, DBuser, DBpass);
// get a new statement object
stmt = conn.createStatement();
// and execute a simple query
ResultSet rs = stmt.executeQuery("SELECT * FROM museum_path");
int dat;
while (rs.next()){
//ottiene il dato
dat = rs.getInt("id_path");
//stampa a video
out.println(dat);
}//while
conn.close();
%>
</body></html>
e questo è l'errore
Error during query: Unexpected Exception: java.lang.ArrayIndexOutOfBoundsException message given: 35
sapete cosa può essere. In questo caso id_path è una chiave.
Grazie
-
Il messaggio è tipico,
qualcuno da qualche parte ha indicato un indice di array (35) mentre questo array è più corto. In questo caso viene sollevata una ArrayIndexOutOfBoundsException, letteralmente tradotto "indice di array fuori dai limiti".
Ma sono quasi sicuro che NON ACCADE nel pezzo di codice che hai indicato ma altrove...
quindi non posso dirti cosa correggere...
-
grazie, dove mi consigli di andare a vedere?
Nel db non credo ci siano dei problemi, l'unica cosa che uso è "java.sql.*" adesso faccio una ricerca
-
Beh, sicuramente controlla tutto il codice della pagina che ti lancia questa eccezione (che te lo dico a fare? :wink:)
soprattutto dove si esegue una iterazione, dove usi array o dove usi classi che sotto sotto usano un array, dunque controlla le iterazioni (do while, for..) che fai, oppure punti dove direttamente tenti di reperire un indice di un array o collezione che li usa.
Mentre invece nel pezzo di codice che hai postato l'iterazione è SICURA, visto che fai un loop "while" dipendente dal fatto che esistano successivi (rs.next() ) elementi nella collezione, in questo caso il resultset.
-
il problema che è non ho incluso altri file quindi quello che ho postato è tutto il file (non ci sono altre iterazione).
A questo punto non so dov' è il problema. Puo' essere perchè uso mysql5 (non l'ho mai provato)?
-
il problema stava in mysql 5. Ho installato la versione 4 e tutto funziona correttamente. Non voglio indagare il perchè :confused: