Как мы извлекаем данные столбца типа данных blob из базы данных h2?

#database #blob #h2 #corda #data-extraction

#База данных #большой двоичный объект #h2 #corda #извлечение данных

Вопрос:

Мы развернули узлы и отправили транзакцию с одного узла на другой с помощью corda, и то же самое было сохранено в базе данных h2 в таблице «NODE_TRANSACTIONS». Столбец TRANSACTION_VALUE в таблице NODE_TRANSACTIONS имеет тип данных BLOB.

Пожалуйста, предложите, как извлечь данные из этого столбца в удобочитаемом формате

Мы пробовали извлекать данные с помощью resultset.getBinaryStream java, но не уверены в поддерживаемом типе файла, в котором его нужно прочитать. Пробовал с типами файлов image / txt / pdf и т. Д., Но ни один из файлов не был в удобочитаемом формате.

 static String url = "jdbc:h2:tcp://localhost:12345/node";
    static String username = "sa";
    static String password = "";
        Class.forName("oracle.h2.Driver");
        Connection conn = DriverManager.getConnection(url, username, password);
        System.out.println("getting connection: "   conn);
String sql = "SELECT TX_ID, TRANSACTION_VALUE FROM NODE_TRANSACTIONS where rownum<2";
PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
while (rs.next()) {
            InputStream data=rs.getBinaryStream(2);
            File file = new File("D:\blob.txt");
            FileOutputStream fos = new FileOutputStream(file);
            byte[] buffer = new byte[1];
            while (data.read(buffer) > 0) {
                fos.write(buffer);
            }
            fos.close();
        }
        conn.close();
  

Кроме того, пожалуйста, предложите любой другой способ чтения данных столбца с использованием функций базы данных h2 (или) функций oracle

Я ожидаю, что выходные данные будут в удобочитаемом формате

Ответ №1:

Если после транзакции данные состояния хранятся в базе данных в удобочитаемом формате, состояние должно реализовывать интерфейс QueryableState .

Смотрите Документы по адресу https://docs.corda.net/api-persistence.html и пример в https://github.com/corda/cordapp-example/blob/release-V4/java-source/src/main/java/com/example/state/IOUState.java