繁体   English   中英

自动增量插入数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM