微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PreparedStatement插入如何自动增加ID?

如何解决使用PreparedStatement插入如何自动增加ID?

将该列 完全 放在INSERT语句之外。它将由数据库引擎生成。您的查询应为: __

INSERT INTO employee (time, name)
VALUES (?, ?)

其次,您必须先执行插入操作,然后再从结果中取出密钥。

我相信您的代码应为:

PreparedStatement preparedStatement = 
    connect.prepareStatement("INSERT into employee (time, name) VALUES (?,?)", 
    Statement.RETURN_GENERATED_KEYS);

preparedStatement.setTimestamp(1, 
    new java.sql.Timestamp(new java.util.Date().getTime()));                           
preparedStatement.setString(2, "Test");

preparedStatement.executeUpdate();

ResultSet tableKeys = preparedStatement.getGeneratedKeys();
tableKeys.next();
int autoGeneratedID = tableKeys.getInt(1);

请注意,此示例不检查执行的语句是否成功或返回的键是否存在。

解决方法

我有一个PreparedStatement,例如:

 PreparedStatement preparedStatement = connect.prepareStatement("INSERT into employee (id,time,name" + "(?,?,?)",Statement.RETURN_GENERATED_KEYS);
 ResultSet tableKeys = preparedStatement.getGeneratedKeys();
 preparedStatement.executeUpdate();
 tableKeys.next();
 int autoGeneratedID = tableKeys.getInt(1);
 preparedStatement.setInt(1,autoGeneratedID);
 preparedStatement.setTimestamp(2,new java.sql.Timestamp(new java.util.Date().getTime()));                           
 preparedStatement.setString(3,"Test");
 preparedStatement.executeUpdate();

如您所见,Employee表具有一个自动递增的ID。我基本上也需要使用prepareStatement自动添加它。有人可以告诉我我要去哪里哪里并纠正我吗?现在,这只是给我一个与Statement相关的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。