gpt4 book ai didi

java - 如何从 BLOB 数据类型 SQLite JDBC 创建唯一标识符

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:31 30 4
gpt4 key购买 nike

我正在通过 JDBC 从 SQLite 表中读取一些数据。其中表格具有以下列:

[Id:Integer], [parentId:Integer], [Name:String], [Type:Integer], [Data:BLOB]

现在我需要从 BLOB 数据创建一些唯一标识符,因此相同的 BLOB 每次都会生成相同的标识符。截至目前,我正在从 blob 创建一个字节数组,然后将其创建为 toString能保证唯一性吗? CPU 周期效率高吗? 因为我有很多这样的记录需要处理。请建议。以下是我的代码。

public static void scanData(String dbName) {
String url = "jdbc:sqlite:C:/dbfolder/" + dbName;
try (Connection con = DriverManager.getConnection(url);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from someTable");) {

while (rs.next()) {
Integer type = rs.getInt("Type");
if (type != null && type.equals(3)) {
Integer rowId = rs.getInt("Id");
Integer parentId = rs.getInt("ParentID");
String name = rs.getString("Name");
System.out.println("rowId = " + rowId);
System.out.println("parentId = " + parentId);
System.out.println("name = " + name);
System.out.println("type = " + type);

InputStream is = rs.getBinaryStream("Data");
if (is != null) {
byte[] arr = IOUtils.toByteArray(is);
if (arr != null) {
System.out.println("Data = " + arr.toString());
}
}
System.out.println("---------------------------");
}

}
} catch (SQLException e) {
System.out.println(e.getMessage());
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
}
}

** IOUtils 用于:org.apache.commons.io.IOUtils

最佳答案

要生成唯一标识符,您可以使用 org.apache.commons.codec.digest.DigestUtils 生成 sha256,以便它对于每个 blob 类型都是唯一的

DigestUtils.sha256Hex(new FileInputStream(file));

将 Blob 转换为 inputStream

blob.getBinaryStream();

关于java - 如何从 BLOB 数据类型 SQLite JDBC 创建唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50174959/

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