怎么从sqllite拿到一个Blob类型的数据并打印出来。打印出现[B@6fde07a 问题

@Query("SELECT *from Face WHERE id= :PicId")
    FaceEntity getPicId(int PicId);


//这里的FaceEntity 应该可以写成别的类型,不过我返回Blob的时候报错

拿到blo后打印不出来 出现 [B@6fde07a 查了才发现不能直接打印。Java 中 byte 数组的默认打印方式,它并不直接显示数组内容或者字节数据的具体内容。

为什么会出现这样的情况。

在 Java 中,当你打印一个对象时,如果该对象没有重写 toString() 方法,Java 会使用默认的 Object 类的 toString() 方法来生成字符串表示。对于 byte 数组 [B@6fde07a,这里的 [B 表示一个 byte 数组,@6fde07a 是该对象的哈希码的十六进制表示。

因此,当你尝试打印 blo.getFacePic() 返回的结果时,如果 blo.getFacePic() 是一个 byte 数组,你会看到类似 [B@6fde07a 的输出,而不是 byte 数组的内容。

可以手动遍历 byte 数组并打印每个元素的值。将字节数组中的每个字节转换为十六进制。

 FaceDao userDao = faceRoomDatabase.userDao();
       FaceEntity blo = userDao.getPicId(1);
       
         
         byte[] picData = blo.getFacePic();
         StringBuilder sb = new StringBuilder();
         for (int i = 0; i < picData.length; i++) {
             String hex = String.format("%02X", picData[i]);
             sb.append(hex);

         }
         System.out.println("Blob Pic = [" + sb.toString() + "]");

    }

log一下

完美!!!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 C# 中的 SQLite.NET 库来连接 SQLite 数据库。以下是一个示例代码,演示如何连接 SQLite 数据库,查询最新一条数据的某一个整数字段,并将结果输出到控制台: ```csharp using System; using System.Data.SQLite; class Program { static void Main() { // 连接 SQLite 数据库 string connectionString = "Data Source=<数据库文件名>.db"; using (var connection = new SQLiteConnection(connectionString)) { connection.Open(); // 查询最新一条数据的某一个整数字段 string sql = "SELECT <字段名> FROM <表名> ORDER BY <排序字段> DESC LIMIT 1"; using (var command = new SQLiteCommand(sql, connection)) { int result = (int)command.ExecuteScalar(); Console.WriteLine(result); } } } } ``` 其中,`<数据库文件名>` 是 SQLite 数据库文件的名称(包括路径),`<字段名>` 是你要查询的字段名,`<表名>` 是你要查询的表名,`<排序字段>` 是你按照哪个字段进行排序,`DESC` 表示倒序排序,`LIMIT 1` 表示只返回一条数据,即最后一条数据。 你需要将上述代码中的 `<数据库文件名>`、`<字段名>` 和 `<表名>` 替换成你实际使用的名称。另外,如果你要查询的字段不是整数类型,你需要将 `(int)` 转换成适当的类型。 注意,上述代码中的 SQL 查询语句中的字段名、表名和排序字段都需要使用实际的名称替换,否则会抛出异常。同时,你需要确保 SQLite 数据库文件存在,并且你具有读取它的权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值