将java中的随机整数作为唯一ID插入mysql

时间:2014-09-15 07:56:00

标签: java mysql

如何从java插入生成的随机整数并作为唯一ID插入MySQL?

2 个答案:

答案 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 

我认为你不是这个意思,我就把它留在那里。