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.
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


0