[英]Inserting into database with auto increment
我需要使用准备好的语句将一些值存储到表中。
我的表中有一列叫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();
您只需在准备好的语句中省略自动生成的字段,因为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 $$
从准备好的语句中删除id
字段。
因为它将与字段数据冲突,所以可能会发生问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.