1

Androidに Array があり、それをテーブルの BLOB 列java.lang.Bytes[]に保存したいと考えています。SQLLite

テーブルや列などを作成しました。配列をそのまま 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 型は、バイナリ データ (バイト) の大きな配列をデータベースの列の値として格納します。そのため、列の値の型を使用する必要があります。次に、byte []blobtableその中に保存します。次の手順に従う必要があります (例: 画像):

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-列タイプをブロブにします。4-このバイト配列をその列に保存します。

于 2015-08-04T11:12:52.310 に答える