我正在使用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
存储在sqlite中。但是我希望只做一次(不是在for循环中一个接一个地获取数据)。有没有我可以使用的数据集,可以将整个图像像图像一样存储在C#中? 最佳答案
您想要像图像一样存储对象吗?因此,从总体上讲,使对象可序列化如下:
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,对其进行调查并确定数据是否合理。
祝好运!