我有一个Sqlite数据库文件,其中包含blob数据。我只知道数据库有blob数据,我知道预期的输出应该是什么。 blob数据的预期输出应该是包含其他文本的Mac地址。
我尝试获取十六进制输出但是并没有真正帮助我获得我知道的数据库中的预期输出。我还使用了十六进制编辑器和sqlite查看器,但只显示了乱码不可读的文本。
下面是一些代码,我试图从blob数据中获取字节,但不会产生我预期的输出。 Sqlite在Java中没有getBlob函数。
if (rs.next()) {
byte[] buffer = rs.getBytes(1);
System.out.println(buffer.toString());
}
blob的预期输出应为:“JOHN A6:44:33:A4:G5:A4”
以下是Hex dump 0008f473eb41 e8ba3b1c的示例
如何以编程方式检索blob数据并解码sqlite中的blob内容?
现在你正在打印byte[]
阵列toString()
。 Java中的数组没有以有意义的方式实现。
您可以尝试将byte[]
数组转换为String
:
new String(buffer, Charsets.UTF_8)
如果这不起作用,请使用rs.getBinaryStream(1)
获取表示值的InputStream
,并按照this answer读取它。