使用自动增量插入数据库

时间:2014-06-09 11:55:59

标签: java mysql

我需要使用预准备语句将一些值存储到我的表中。

我的表中有一个名为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();

2 个答案:

答案 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字段。

因为它会与现场数据发生冲突,所以可能会出现问题。