Problema de código OJDBC en Java Eclipse

Hice una tabla de registro reg1 y almacené los valores para cada usuario registrado desde un archivo HTML. Ahora he creado una página de inicio de sesión en HTML donde los usuarios pueden dar su nombre de usuario y ver los datos ingresados ​​por ellos. Hice un usuario "bbb" y quiero mostrar solo su nombre de usuario. Así que hice el código general de Java de la siguiente manera:

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class Check extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         // TODO Auto-generated method stub
         String username=request.getParameter("username");
         try{
             Class.forName("oracle.jdbc.driver.OracleDriver");
             String url="jdbc:oracle:thin:@localhost:1521:XE";
             Connection con=DriverManager.getConnection(url,"system","root");
             Statement stmt=con.createStatement();
             ResultSet rs=stmt.executeQuery("select uname from reg1");


            while(rs.next())    
                {

                String name=rs.getString("uname");
                if(name==username)
                {


                response.setContentType("text/html");
                PrintWriter pw=response.getWriter();
                pw.println("Your User name is:"+username);

            //  System.out.println(""+name);
                }



                    con.commit();

                }
             stmt.close();
    }


                catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


    }

   }

Está dando errores como java.sql.SQLException: Closed Statement: next

La tabla es como sigue:

FNAME LNAME DIR CORREO OCCU UNNAME CONTRASEÑA aaa aaa aaaa aaa aaaa bbb cccc bkgkb jjv jhvjmh jjkg jvjv jvjvh bjbmb

Por favor ayúdenme a resolver esto!!

preguntado el 01 de julio de 12 a las 09:07

2 Respuestas

Primero no hay necesidad de usar

con.commit();

Puede usarlo solo en caso de que establezca AutoCommit en falso.

con.setAutoCommit(false);

En segundo lugar, te recomiendo que uses PreparedStatements que son más rápidos y seguros.
A continuación, no hay necesidad de cerrar su estado de cuenta.

In finalmente bloque tienes que llamar con.close() cuando cierre la conexión, la declaración se cerrará automáticamente.

Nota: Tienes que llamarlo en bloque final, porque tu Application puede fallar y luego su Connection nunca estar cerrado.

finally {
   if (con != null) {
      con.close();
   }
}

Respondido 01 Jul 12, 10:07

Gracias por la respuesta. Pero cuando trato de escribir el código mencionado anteriormente, Eclipse está dando un error que no puede identificar con. Entonces, ¿qué debo hacer? - mistu4u

necesita crear la variable de conexión fuera del bloque de prueba para que Connection con = null; tratar { ... } - Simón Dorociak

Intente quitar el con.commit línea, no hay necesidad de eso.

Deberías agregar finally para usted catch y cerrar la declaración allí.

Y también deberías usar Declaración preparada en lugar de Declaración.

Acerca finally ver aquí.

Respondido 01 Jul 12, 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.