Meter datos en MySQL a traves de un servlet. Que esta mal?

Iniciado por manolazo, 25 Febrero 2013, 18:14 PM

0 Miembros y 1 Visitante están viendo este tema.

manolazo

Hola.

Estoy mirando como va todo esto de JSP y servlets para principiantes, he buscado informacion y a la hora de practicar quiero hacer lo siguiente.

Utilizo Netbeans y he instalado un servidor MySQL . Tambien uso apache TOmcat

Quiero insertar unos datos a traves de un servlet en java en una tabla de la siguiente manera:

Primero me creo un nuevo proyecto WebServices a traves de Netbeans e instalo el conector mysql-connector-java-5.1.23-bin.jar en la libreria

A continuacion me creo una clase de java que establece la conexion con la base de datos:


package ejemplo1.Services;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class Conexion {
   
   public static Connection getConnection() throws ClassNotFoundException, SQLException{
       Connection databaseconnection = null;      
        Class.forName("com.mysql.jdbc.Driver");
        databaseconnection = DriverManager.getConnection("jdbc:mysql://localhost/prueba2", "root", "pepe");        
       return databaseconnection;      
   }    
}



Luego me creo un servlet. Lo que quiero es recoger los datos que introduzco por la barra de navegador y se me guarden en la base de datos.

Es decir, de esta manera: http://localhost:8080/WebApplication5_ServletSQL/ServletController?isbn=1547&titulo=quijote


@WebServlet(name = "ServletController", urlPatterns = {"/ServletController"})
public class ServletController extends HttpServlet {

   /**
    * Processes requests for both HTTP
    * <code>GET</code> and
    * <code>POST</code> methods.
    *
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
     
           String isbn= request.getParameter("isbn");
           String titulo = request.getParameter("titulo");            
                 
           try {                
               
                            Connection conn = Conexion.getConnection();  
                            PreparedStatement pst= conn.prepareStatement("INSERT INTO libro VALUES(?,?)");
                            pst.setString(1, isbn);
                            pst.setString(2, titulo);                            
                            pst.execute();

               }catch (ClassNotFoundException |SQLException ex){
                    ex.printStackTrace();
                }            
     
   }
   // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
 


La base de datos esta bien, todo esta bien implementado, es tan sencillo que no necesita de más. Pero por alguna extraña razon no se guardan los parametros en la base de datos.

Alguna idea?.
Un saludo.

1mpuls0

No he trabajado con serlevt pero puedes intentar con lo siguiente:

1. Guarda tu query en una variable:
Código (java) [Seleccionar]

String queryInsert = "INSERT INTO table....";


2. Muestra o imprime el resultado de tu string-query

3. Ejecuta directamente en la consola o gui el resultado de tu string-query.

Tambien revisa la conexión con la base de datos, revisa tus excepciones para ver si te arroja alguna.


Saludos.
abc

manolazo

Cita de: Darhius en 25 Febrero 2013, 18:47 PM
No he trabajado con serlevt pero puedes intentar con lo siguiente:

1. Guarda tu query en una variable:
Código (java) [Seleccionar]

String queryInsert = "INSERT INTO table....";


2. Muestra o imprime el resultado de tu string-query

3. Ejecuta directamente en la consola o gui el resultado de tu string-query.

Tambien revisa la conexión con la base de datos, revisa tus excepciones para ver si te arroja alguna.


Saludos.

Hola , gracias por contestar.

Perdona la ignoracia pero no se muy bien como mostrar o imprimir el resutado del string-query. Te refieres a poner un Syste.out?
La conexion de la base de datos es correcta.
Como te digo la logica del programa creo que es muy sencilla pero no veo donde puede andar el error.
gracias

1mpuls0

xD si me refiero a un System.out.prinln() es que no sé si en servlet es igual :P

copias el resultado que te muestra en el output y lo pegas en tu consola, lo ejecutas y verifica que sea exitosa la insersión.

Saludos.
abc

manolazo

Hola,

En el servlet no va el System.out.println() ya que no muestra el resultado por consola, no es como una clase normal.

La insercion es exitosa si me creo una clase sin usar servlet con lo cual, no entiendo donde anda el error.



1mpuls0

#5
Te falta un parentesis de cierre.
INSERT INTO tabla VALUES(v1,v2);

Código (java) [Seleccionar]

String isbn= request.getParameter("isbn");
PreparedStatement pst= conn.prepareStatement("INSERT INTO libro VALUES(?,?");


Quedaría así:

Código (java) [Seleccionar]

PreparedStatement pst= conn.prepareStatement("INSERT INTO libro VALUES(?,?)");
abc

manolazo

Sorry, no me di cuenta, Ya esta editado.

Ya me gustaría pero por ahi no viene el error porque si no, me lanzaria una excepcio y no me lanza nada.

Seguimos igual...

Pablo Videla

Coloca una excepcion general, solo veo 3 tipos de excepciones y que pasa si no se cumple ninguna?

completa con otro catch(Exception e)

1mpuls0

#8
Cita de: manolazo en 25 Febrero 2013, 19:45 PM
Sorry, no me di cuenta, Ya esta editado.

Ya me gustaría pero por ahi no viene el error porque si no, me lanzaria una excepcio y no me lanza nada.

Seguimos igual...

o.O que raro, debería enviarte una excepción de sintaxis, verifica los tipos de errores que pueden resultar y deberías buscar una forma de mostrar la consulta :P en texto plano en el output eso ayuda mucho.

Por otro lado no sé nada de servlets xD espero que alguien más te pueda ayudar.

Saludos.
abc

manolazo

Cita de: DonVidela en 25 Febrero 2013, 19:52 PM
Coloca una excepcion general, solo veo 3 tipos de excepciones y que pasa si no se cumple ninguna?

completa con otro catch(Exception e)

Hola, He puesto otro catch como dices y cuando se introducen los parametros no se lanza ningun tipo de error ni exception , y cuando voy al workbench de mysql y actualizao no aparecen los datos insertados.
Que puede haber mal? es que todo parece correcto, es un código muy sencillo!!.  ¿donde estara el error???