如何从java插入生成的随机整数并作为唯一ID插入MySQL?
答案 0 :(得分:0)
生成随机数
Random rand = new Random();
int x = rand.nextInt(100000);
在存储到数据库之前,您必须检查该号码是否已存储。 检查完毕后可以插入。
为什么要将随机数作为唯一ID插入?。您可以自动递增主键。然后您可以轻松地为主键插入唯一编号。无需创建随机数。
答案 1 :(得分:0)
你可以反过来:在表上使用AUTOINCREMENT主键,每个JDBC不插入那个主键,但之后查询MySQL生成的密钥,并发安全。
try (PreparedStatement stm = conn.prepareStatement(
"INSERT INTO moviesTbl (title, ...) VALUES(?, ? ...)")) {
stm.setString(1, title);
stm.setString(2, ...);
...
int updateCount = stm.executeUpdate();
if (updateCount != 0) {
try (ResultSet genKeys = stm.getGeneratedKeys()) {
if (genKeys.next()) { // At most 1 record inserted
// Normally only one key generated per record.
int generatedId = genKeys.getInt(0);
...
}
} // Close result set.
}
} // Closes stm
JDBC返回ResultSet,因为您可以插入多个记录。然后你可以为每条记录生成几个密钥。
存储UUID并不完全支持MySQL;也许JDBC驱动程序已经支持了。 UUID是128位数字,MaySQL BINARY(16)或CHAR(36),类似于this
CREATE FUNCTION `BINTOUUID`(UUID BINARY(16)) RETURNS char(36)
BEGIN
RETURN concat(HEX(LEFT(uuid,4)),'-', HEX(MID(uuid,5,2)),'-', HEX(MID(uuid,7,2)),
'-',HEX(MID(uuid,9,2)),'-',HEX(RIGHT(uuid,6)));
END
我认为你不是这个意思,我就把它留在那里。