有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    生成随机数

    Random rand = new Random();
    int x = rand.nextInt(100000);
    

    在存储到数据库之前,您必须检查号码是否已存储。 检查是否可以插入后

    为什么要插入随机数作为唯一id?。您可以自动增加主键。然后,您可以轻松地为主键插入唯一的数字。而且不需要创建随机数

  2. # 2 楼答案

    你可以做相反的事情:在表上使用一个自动递增的主键,按照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返回一个结果集,因为您可以插入多条记录。然后,每个记录可以生成几个密钥


    存储UUID在MySQL中没有完全的支持;也许JDBC驱动程序已经得到了支持。 UUID是一个128位的数字、MaySQL二进制(16)或带有类似this的字符(36)

    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 
    

    因为我认为你不是这个意思,所以我就到此为止