【问题标题】:sqlite blob read and writesqlite blob 读写
【发布时间】:2012-08-07 08:10:16
【问题描述】:

我想将一个长字符串存储到 android 的 sqlite 中。 我通过以下方式将其写入sqlite:

String content = bodytext.toString();
    byte[] contentByte = content.getBytes();
    Log.d("bytetoString",new String(contentByte));
    String sql1 = "insert into content(id,content) values( '" + messageID
            + "','" + contentByte + "');";
    db.execSQL(sql1); 

我通过以下方式阅读它:

String sql = "select * from content where id='" + messageID + "'";
    Cursor temp = db.rawQuery(sql, null);
    if (temp.moveToNext()) {
        byte[] contentByte = temp.getBlob(temp.getColumnIndex("content"));
        String sb = new String(contentByte);
        Log.d("String",sb);
        temp.close();
        return sb;
    }

但是,当我打印刚刚阅读的字符串时。它打印出类似“[B@41431930??”的内容,有什么问题吗?

【问题讨论】:

    标签: android sqlite blob


    【解决方案1】:

    它是一个数组,toString() 只打印内存地址。这就是为什么你看到[B@41431930??

    如果您想要可读的值,请使用 java.util.Arrays.toString(contentByte) 之类的东西

    【讨论】:

    • 感谢您的帮助。但还是有问题。我尝试 java.util.Arrays.toString(contentByte) 但它返回 "[91,66,64,52...]" ,我想知道当我将字节写入 sqlite 时是否有错误?
    • 看看这个讨论是否有帮助stackoverflow.com/questions/6684665/…
    • 我现在发现了这个错误。我已经通过使用“插入内容(id,内容)值('”+ messageID+“','”+ contentByte +“');”将contentByte的地址存储到SQLite中。 ,此代码通过调用 contentByte.toString() 将 contentByte 转换为 String。因此,我将其更改为“db.execSQL("insert into content(id,content) values(?,?)",new Object[]{messageID,contentByte});",然后它就可以工作了。非常感谢!!
    • 感谢 Ryan,这种方法(db.execSQL("insert into content(id,content) values(?,?)",new Object[]{messageID,contentByte}); )工作正常为了我。您可以创建一个单独的答案而不是评论,您将获得投票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2011-04-14
    • 1970-01-01
    • 2011-12-27
    • 2018-11-11
    • 2013-09-20
    • 2011-05-08
    相关资源
    最近更新 更多