Я читаю некоторые данные из таблицы SQLite от JDBC. Где таблица имеет следующие столбцы:
[Id:Integer], [parentId:Integer], [Name:String], [Type:Integer], [Data:BLOB]
Теперь из данных BLOB мне нужно создать какой-то уникальный идентификатор, поэтому один и тот же BLOB будет каждый раз генерировать один и тот же идентификатор. На данный момент я создаю байтовый массив из большого двоичного объекта и затем создаю toString
из него. Гарантирует ли это уникальность? И эффективен ли цикл ЦП? Поскольку у меня много таких записей для обработки Пожалуйста, предложите. Ниже приведен мой код для того же.
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 is used of : org.apache.commons.io.IOUtils