no puedo publicar datos en la base de datos mysql desde el servicio web de descanso
Frecuentes
Visto 2,117 equipos
0
Y aquí está mi código de descanso
@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}
*/
}
aquí está 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";
}
}
Ahora, cuando pruebo el descanso y publico los datos, se publican con éxito pero no se actualizan en la base de datos. Por favor, dígame mi error.
la respuesta REST es como
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>
Y puede ponerse en contacto con mi base de datos y se crea una nueva fila en la tabla pero con valores nulos, nulos, nulos. Amablemente ayúdame en esto.
2 Respuestas
1
Creo que los datos no están "publicados con éxito". usas el @PathParam
anotación cuando tiene los parámetros en su @Path
del ADN, tales como los @Path("Users/{id}")
.
¿Cómo estás enviando los parámetros? Si los envías con un navegador y un POST <form>
, intenta usar el @FormParam
anotación. Ver esta pregunta para obtener más información.
contestado el 23 de mayo de 17 a las 13:05
0
Con una declaración preparada, no debe ingresar los valores de inmediato. Prueba lo siguiente
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();
Hay un ejemplo de esto en el Página API
También en una nota al margen, observe sus argumentos. Su definición de método tiene createText(int id,String Username,String Password)
pero pasa los valores con la contraseña y el nombre de usuario mezclados.
Respondido 28 ago 12, 13:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql rest jakarta-ee jax-rs or haz tu propia pregunta.
@post publicando algo diferente que ni siquiera puedo insertar mientras pruebo la red de descanso, puedo contactar a mi sql pero los valores nulos nulos se actualizan en la fila - SHREY CHATURVEDI
¿Ha revisado el código y verificado que esos valores no sean nulos antes de enviarlos a la base de datos? - Corwin01
Exactamente... ves NULL en la base de datos porque pasas NULL a la base de datos. Dices "Enviado: 1, hey, hdhb": ¿cómo enviaste estos valores? - Flavio