【发布时间】:2021-04-19 11:51:51
【问题描述】:
GET、PUT 和 DELETE 有效,但尝试执行 POST 方法却不起作用。在我的数据库中,“usuario”有一个 id、一个名字和年龄(edad)。
@POST
@Consumes({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public Response crearUsuario(Usuario usuario) {
try {
String sql = "INSERT INTO `RedLibros`.`usuario`(`nombre`,`edad`) " + "VALUES('"
+ usuario.getnombre() + "', '" + usuario.getedad() + "');";
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
int affectedRows = ps.executeUpdate();
ResultSet generatedID = ps.getGeneratedKeys();
if (generatedID.next()) {
usuario.setidusuario(generatedID.getInt(1));
String location = uriInfo.getAbsolutePath() + "/" + usuario.getidusuario();
return Response.status(Response.Status.CREATED).entity(usuario).header("Location", location).header("Content-Location", location).build();
}
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("No se pudo crear el usuario").build();
} catch (SQLException e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("No se pudo crear el usuario\n" + e.getStackTrace()).build();
}
}
我正在使用 Postman,我的输入内容是:
</usuario idusuario="1">
<edad>43</edad>
<nombre>George</nombre>
</usuario>
错误是:Ljava.lang.StackTraceElement;@1aeb297
And this is the script of my db, im not sure if its because the character set, im using UTF-8.
-- MySQL Script generated by MySQL Workbench
-- lun 19 abr 2021 14:13:50 CEST
-- Model: New Model Version: 1.0
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema RedLibros
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `RedLibros` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `RedLibros` ;
-- -----------------------------------------------------
-- Table `RedLibros`.`usuario`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `RedLibros`.`usuario` (
`idusuario` INT NOT NULL,
`nombre` VARCHAR(45) NULL,
`edad` VARCHAR(45) NULL,
PRIMARY KEY (`idusuario`))
ENGINE = InnoDB;
【问题讨论】:
-
能否请您添加 1. POST 的输入 2. 调用 POST 时的错误消息 3. 表结构 4. 表 DB 类型 5 表约束?看起来插入不起作用。
-
我还以为是SQL语句,但看不出哪里错了。
-
我认为您没有通过 POST 调用传递
idusuario。如果您希望这是自动递增的,那么您需要相应地定义表。您应该使用如下 auto_increment 语法 - CREATE TABLE IF NOT EXISTSRedLibros.usuario(idusuarioINT NOT NULL AUTO_INCREMENT,nombreVARCHAR(45) NULL,edadVARCHAR(45) NULL, PRIMARY KEY (idusuario)) -
是这个问题,非常感谢!它现在可以工作了:)
-
将其标记为答案... Ty
标签: sql web-project