我正在使用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,对其进行调查并确定数据是否合理。

祝好运!

08-26 21:31
查看更多