我使用sqlite和java作为编程语言。我有一个班级
public class DataSet {
public ArrayList<Double> a = null;
public ArrayList<Double> b = null;
public ArrayList<Double> c = null;
public DataSet() {
a = new ArrayList<Double>();
b = new ArrayList<Double>();
c = new ArrayList<Double>();
}
}
我想存储DATA
,其中DataSet DATA=new DataSet();
位于sqlite中。但我希望一次(不在for循环中逐个获取数据)。有没有我可以使用的数据集,并将整个事物像C#中的图像一样存储?
答案 0 :(得分:2)
您想要像Image一样存储对象吗?所以作为一个整体...使对象Serializable像这样:
public class DataSet implements Serializable {
/* this is the version of this class,
increment, when you change the implementation */
public static final serialVersionUID = 1L;
...
}
并将二进制结果存储到具有ObjectOutputStream
的字节数组中。这个字节数组可以作为BLOB保存到数据库中。例如,如果您的表具有id和数据列:
byte[] data;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
try {
oos.writeObject(DATA);
data = bos.toByteArray();
} finally {
oos.close();
}
PreparedStatement pstmt = jdbcConnection.prepareStatement(
"insert into MYTABLE (id, data) values (?, ?)");
pstmt.setLong(1);
pstmt.setBlob(2, new ByteArrayInputStream(data));
...
提交数据,关闭连接。警告:此代码未经过测试......
再次从数据库中读取blob,您可以在从BLOB获取的字节数组上使用ObjectInputStream
,就像上面的方法一样。我留给你代码。
请记住,以序列化的方式存储数据是人类无法读取的,因此您无法打开SQLite,查看它并查明您的数据是否合理。
祝你好运!