Как создать уникальный идентификатор из BLOB-типа данных SQLite JDBC - PullRequest
0 голосов
/ 04 мая 2018

Я читаю некоторые данные из таблицы 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

1 Ответ

0 голосов
/ 04 мая 2018

Для создания уникального идентификатора вы можете использовать org.apache.commons.codec.digest.DigestUtils, чтобы сгенерировать sha256, чтобы он был уникальным для каждого типа BLOB-объекта

DigestUtils.sha256Hex(new FileInputStream(file));

Преобразование BLOB-объекта в inputStream

blob.getBinaryStream();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...