gpt4 book ai didi

java - 在 Java 中生成唯一键以用作 Oracle 表中的主键

转载 作者:行者123 更新时间:2023-12-01 16:09:31 25 4
gpt4 key购买 nike

我正在尝试获取长度为 15 的字符串作为数据库表中的主键。下面的java代码返回一些长度为35的 key

UUID.randomUUID().toString()
  1. 我可以更改它以返回长度为 15 的 key 吗?
  2. 如何保证线程安全?

非常感谢任何帮助。

最佳答案

为什么不使用 Oracle 的sequence 工具?使用 Java 无法做得更好/更安全。

编辑:因此,您主要关心的是数据库性能。您不想“再次”连接以从数据库获取生成的 ID。如果您只是使用连接池并重用相同的连接来立即获取生成的 key ,则不需要担心。大多数 JDBC 驱动程序都可以通过 Statement#getGeneratedKeys() 返回生成的 key 。 。 Oracle 较新的 JDBC 驱动程序支持它。

这是一个基本示例:

Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet generatedKeys = null;

try {
connection = database.getConnection();
preparedStatement = connection.prepareStatement("INSERT INTO user (name, age) VALUES (?, ?)";
preparedStatement.setString(user.getName());
preparedStatement.setInteger(user.getAge());
int affectedRows = preparedStatement.executeUpdate();
if (affectedRows == 0) {
throw new DAOException("Creating user failed, no rows affected.");
}
generatedKeys = preparedStatement.getGeneratedKeys();
if (generatedKeys.next()) {
user.setId(generatedKeys.getLong(1)); // Here's the magic.
} else {
throw new DAOException("Creating user failed, no generated key obtained.");
}
} catch (SQLException e) {
throw new DAOException(e);
} finally {
close(connection, preparedStatement, generatedKeys);
}

关于java - 在 Java 中生成唯一键以用作 Oracle 表中的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com