1

我在 Android 中有一个数组,java.lang.Bytes[]我想将它保存到一个SQLLite表中的一个 BLOB 列中。

我创建了表和列等。我不确定如何将数组保存为 BLOB。

public void AddUpdateKeys(int deviceID, String key, Boolean learned, Byte[] rawKey)
    {   
    ... // other code
    ContentValues cv = new ContentValues();
    cv.put(colKeyDevID, deviceID);
    cv.put(colKeyLearned, key);
    cv.put(colKeyLearned, learned ? 1 : 0 );        
    cv.put(colKeyData, rawKey); <-- Here is the issue, how to convert Type Byte[] to byte[]

如何将原始数据转换java.lang.Byte[]byte[],我试过了

private byte[] getBytes(Byte[] learnedKey) {

    byte[] result = new byte[learnedKey.length];
    for(int i=0; i<learnedKey.length; i++){
        result[i] = learnedKey[i].byteValue();
    }
    return result;
}

但只是“崩溃”,我还检查了 rawKey 包含数据吗?我是 Android SQLLiteJava 新手。我想将原始数据保存Byte[]到 Blob 中,稍后再读回并再次使用。

4

1 回答 1

0

实际上,SQL BLOB 类型将大量二进制数据(字节)存储为数据库列中的值。所以使用列值类型应该指定为blobover 。table然后将你的 byte[] 保存到那个中。你应该在那里执行这些步骤(例如图像):

1-将图像转换为位图。

2-将位图转换为字节数组。

 public static byte[] getBytesFromBitmap(Bitmap bitmap) {
    if (bitmap!=null) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 70, stream);
        return stream.toByteArray();
    }
    return null;
}

3-将列类型设为blob。4-将此字节数组保存到该列。

于 2015-08-04T11:12:52.310 回答