我需要使用预准备语句将一些值存储到我的表中。
我的表中有一个名为id的列,它设置为自动增量。我不需要用户对此列的任何输入。
其他值均来自用户。
编辑:有2个ID。一个来自用户,一个是从数据库自动生成的。数据库自动生成的是主键。
我这样做了吗?
感谢。
准备好的声明:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_details`(IN id varchar(45),IN username varchar(45),IN name varchar(45))
BEGIN insert into details (id,username,name) values (id ,username,name);
END
代码:
PreparedStatement preparedStatement = connect.prepareStatement("CALL INSERT_DETAILS(?,?,?)");
preparedStatement.setLong(1, userID);
preparedStatement.setString(2, username);
preparedStatement.setString(3, name);
preparedStatement .executeUpdate();
答案 0 :(得分:0)
您可以简单地从预准备语句中省略自动生成的字段,因为MySQL会为您设置此值。在您的示例中,参数名称与表属性名称冲突。我遵循的约定是使用p_
或类似名称修改前缀参数名称。
准备好的陈述应该更像以下内容:
DELIMITER $$
CREATE
DEFINER=`root`@`localhost`
PROCEDURE `insert_details`(
IN p_user_id VARCHAR(45),
IN p_username VARCHAR(45),
IN p_name VARCHAR(45))
BEGIN
INSERT
INTO details(id, username, name)
VALUES (p_user_id, p_username, p_name);
END $$
答案 1 :(得分:0)
从预备语句中删除id
字段。
因为它会与现场数据发生冲突,所以可能会出现问题。