0

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.

rationalboss
  • 5,225
  • 3
  • 28
  • 48

2 Answers2

1

I think the data is not "successfully posted". You use the @PathParam annotation when you have the parameters in your @Path, like @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 annotation. See this question for more information.

Community
  • 1
  • 1
Flavio
  • 11,228
  • 2
  • 30
  • 36
  • @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 Aug 28 '12 at 16:29
  • Have you stepped through the code and verified that those values are not null before they are sent to the database? – Corwin01 Aug 28 '12 at 17:17
  • 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 Aug 29 '12 at 07:19
0

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 API page

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.

Sean
  • 7,199
  • 1
  • 21
  • 25