Java - Problema al insertar datos.

   
Vista:

Problema al insertar datos.

Publicado por Angeles (1 intervención) el 05/12/2007 13:41:04
Buenas tardes al ser novata en esto tengo poca idea, y la verdad es que llevo varias semanas tratando de solucionar el siguiente problemilla, al tratar de insertar datos en un array con el siguiente codigo:

public ClassPermisos[] getPrueba(int num_permisos, int rol_login) throws SQLException {
int i = 0;
ClassPermisos permi[] = new ClassPermisos[num_permisos];

if (rol_login != 0)
{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@10.234.254.100:1521:pruebas", "turnos", "shs");
java.sql.Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT TP.ID_PERMISO,TP.DESCRIPCION FROM T_USUARIOS TU, T_PERMISOS_ROLES PR, T_PERMISOS TP WHERE TP.ID_PERMISO=PR.ID_PERMISO AND PR.ID_ROL=TU.ID_ROL AND TU.LOGIN='" + this.login + "'");
while (rset.next())
{
//debugando es aqui donde termina la ejecución, cuando entra aqui...
permi[i].permiso_id = rset.getInt("TP.ID_PERMISO");
permi[i].permiso_desc = rset.getString("TP.DESCRIPCION");
i++;
}
stmt.close();
}
return permi;
}

este javabeans se llama desde un servlet que es este:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

PrintWriter out = response.getWriter();
String login;
String password;
Usuario usuario;
boolean encontrado = false;
ClassPermisos classperm[] = new ClassPermisos[0];
int numero_permisos = 0;
int rol = 0;

login = request.getParameter("login").toUpperCase();
password = request.getParameter("password").toUpperCase();
usuario = new Usuario();

usuario.setLogin(login);
usuario.setPassword(password);

try {
encontrado = usuario.validaUsuario();
} catch (SQLException ex) {
ex.printStackTrace();
}

//con esto controlamos que solo permita el acceso a login existentes.
if (encontrado == true)
{
try {
rol = usuario.getRolUsuario();
numero_permisos = usuario.getNumPermisos(rol);
classperm = usuario.getPrueba(numero_permisos, rol);
} catch (SQLException ex) {
ex.printStackTrace();
}
out.println("<html>");
out.println("<body>");
out.println("<center>");
out.println("<h3><u>RESULTADO DE LA CONSULTA</u></h3>");
out.println("<form name=formulario method=get>");
for (int i=0; i<numero_permisos; i++)
//for (int i=0; i<permisos.length; i++)
{
out.println("Hola Mundo"); //esto es para pruebas
out.println("<input type='button' value='" + classperm[i].permiso_desc + "'><br>"); //escribimos la descripcion del boton.

}
out.println("</form>");
out.println("</center>");
out.println("</body>");
out.println("</html>");
}
else
{
response.sendRedirect("Error.jsp");

Al ejecutar la aplicacion me muestra el siguiente mensaje.

type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.ArrayIndexOutOfBoundsException: 0
note The full stack traces of the exception and its root causes are available in the Sun Java System Application Server Platform Edition 9.0_01 logs.

Empiezo a desanimarme y desearia si alguien fuese tan amable y al menos me dijera como repararlo.

Un saludo a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al insertar datos.

Publicado por Franklin Gamboa (21 intervenciones) el 05/12/2007 15:38:09
El error que estas recibiendo (array index out of bounds) significa que el argumento {num_permisos} es menor que cero o mayor que el tamaño del array.

Dado que {i} lo declaras en 0, yo creo que dever{ias controlar que {num_permisos} sea mayor o igual a 1, ya que si lo declaras en 0 vas a tener problemas como este.

Al declarar el arreglo como int[1], el único campo que vas a tener disponible es el 0.

Yo en tu lugar empezaría por verificar los valores que ingresan en la función.

Espero haberte ayudado

Saludos,

Franklin Gamboa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar