Reputation: 3
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.
Upvotes: 0
Views: 2188
Reputation: 11977
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.
Upvotes: 1
Reputation: 7737
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.
Upvotes: 0