将对象保存到sqlite db

时间:2016-10-05 11:09:35

标签: android database serializable

我想将一个类对象保存到db。我使用了Serializable,但是我的类中的一个对象总是为null。

 import com.google.android.gms.maps.model.LatLng;
 import java.io.Serializable;
 import java.util.ArrayList;
 public class A implements Serializable {
 protected String Name;
 protected int Type;
 protected transient List<LatLng> Nodes=new ArrayList<LatLng>();

}

节点始终为空。如果我删除&#39; transient&#39;然后所有对象都变为空。

保存到数据库是这样的:

    public long InsertList(A Data) {

    byte[] bytes = null;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(Data);
        oos.flush();
        oos.close();
        bos.close();
        bytes = bos.toByteArray();
    } catch (IOException ex) {
        //TODO: Handle the exception
        ex.printStackTrace();
        ;
    }

    ContentValues insertValues = new ContentValues();
    insertValues.put("Data", bytes);
    insertValues.put("Selected", 1);
    return mDb.insert("Table", null, insertValues);

}

1 个答案:

答案 0 :(得分:1)

Java中的transient关键字用于表示不应序列化字段。

因此,在您的情况下,节点不会被序列化。

查看此Why does Java have transient fields?