no puedo publicar datos en la base de datos mysql desde el servicio web de descanso

And here is my rest code

@Path("Users")
public class ItemsResource extends stu{

  @Context
  private UriInfo context;

  /**
   * Creates a new instance of ItemsResource
   */
  public ItemsResource() {
  }

  /**
   * Retrieves representation of an instance of service.ItemsResource
   * @return an instance of java.lang.String
   */
  @GET
  @Produces("text/plain")
  public String getText() {
      //TODO return proper representation object
      throw new UnsupportedOperationException();
  }

  /**
   * POST method for creating an instance of ItemResource
   * @param content representation for the new resource
   * @return an HTTP response with content of the created resource
   */
   @POST
   @Consumes("text/plain")
   @Produces("text/plain")
   public Response postText(@PathParam("id") int id,@PathParam("Password") String Password,
                        @PathParam("Username") String Username) {
    //TODO

       super.createText(id,Password,Username);
       return Response.created(context.getAbsolutePath()).build();
      // return "success";
   }
  /**
   * Sub-resource locator method for {id}
   */   
}

here is stu.java

class stu {

     public String createText(int id,String Username,String Password) {
        //TODO
       try 
       {
          Class.forName("com.mysql.jdbc.Driver");
          Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/users","root","789456");

          String query=  "Insert into users (id,username,password) values('"+id+"','"+Username+"','"+Password+"')";
          PreparedStatement stm = con.prepareStatement(query);         

          stm.executeUpdate(query);
        } catch(ClassNotFoundException e){
           System.err.println ("Sql Exception"+e);
        } catch(SQLException e){
           System.err.println ("Sql Exception"+e);
        }

    return "success";
  } 
}

Now when i test rest and post data it is successfully posted but it does not get updated in database kindly tell me my error

the REST response is as

Request: POST localhost:8090/WebApplication16/resources/Users?
timestamp=1346152551629

Status: 201 (Created)

Time-Stamp: Tue, 28 Aug 2012 11:15:51 GMT

Sent:
1,hey,hdhb

Received:


-----------------------------------------------------------------------

Request: localhost:8090/WebApplication16/resources/application.wadl


Status: 200 (OK)

Time-Stamp: Tue, 28 Aug 2012 11:15:41 GMT

Received:

<?xml version="1.0" encoding="UTF-8"?>
   <application xmlns="research.sun.com/wadl/2006/10">
       <doc xmlns:jersey="jersey.dev.java.net/" jersey:generatedBy="Jersey: 1.5 01/14/2011 12:36 PM"/>
       <resources base="localhost:8090/WebApplication16/resources/">
           <resource path="Users">
               <param xmlns:xs="www.w3.org/2001/XMLSchema" name="id" style="template" type="xs:int"/>
               <param xmlns:xs="www.w3.org/2001/XMLSchema" name="Username" style="template" type="xs:string"/>
               <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Password" style="template" type="xs:string"/>
               <method id="getText" name="GET">
                   <response>
                       <representation mediaType="text/plain"/>
                   </response>
               </method>
               <method id="postText" name="POST">
                   <response>
                       <representation mediaType="text/plain"/>
                   </response>
               </method>
           </resource>
       </resources>
   </application> 

And it is able to contact my database and a new row is created in table but with null,null,null values. Kindly help me out in this.

preguntado el 28 de agosto de 12 a las 12:08

2 Respuestas

I think the data is not "successfully posted". You use the @PathParam annotation when you have the parameters in your @Pathdel ADN, tales como los @Path("Users/{id}").

How are you sending the parameters? If you send them with a browser and a POST <form>, try to use the @FormParam anotación. Ver esta pregunta para obtener más información.

contestado el 23 de mayo de 17 a las 13:05

@post posting s a different thing i am even unable to insert while testing rest web,i am able to contact my sql but null null values are updated in row - SHREY CHATURVEDI

Have you stepped through the code and verified that those values are not null before they are sent to the database? - Corwin01

Exactly... you see NULL in the database because you pass NULL to the database. You say "Sent: 1,hey,hdhb": how did you send these values? - Flavio

With a prepared statement you shouldn't be putting the values in right away. Try the following

String query=  "insert into users (id,username,password) values(?,?,?)";
PreparedStatement stm = con.prepareStatement(query); 
stm.setInt(1, id);
stm.setString(2, Username);
stm.setString(3, Password);
stm.executeUpdate();

There is an example of this on the Página API

Also on a side note, watch your arguments. Your method definition has createText(int id,String Username,String Password) but you pass the values in with password and username mixed up.

Respondido 28 ago 12, 13:08

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