使用JDBC在SQLite DB中插入二进制数组

时间:2018-03-15 19:35:33

标签: java arrays sqlite serialization jdbc

我对java中对象的序列化并不十分熟悉,但我正在尝试将我序列化的对象插入到包含2列的表中:sampleTimestamp INTEGER,data BLOB。使用代码:

// Binary Serialization of the object
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                ObjectOutputStream os = new ObjectOutputStream(bos);
                os.writeObject(result.getTopicInstance());
                byte[] byteArray = bos.toByteArray();
                os.close();

                String query = SQLiteInterface.getInstance().insertOI("data", "sampleTimestamp, data", "" + result.getTimestamp() + "," + byteArray);

public String insertOI(String tableName, String columnList, String values)
{
    return "INSERT OR IGNORE into " + tableName + "(" + columnList + ") values(" + values + ")";
}

从此返回的查询是:

INSERT OR IGNORE into data(sampleTimestamp,data)值(1520448720940000000,[B @ d32e4c]

查询确实到达SQLite并发出但返回错误:

[SQLITE_ERROR] SQL error or missing database (unrecognized token: "[B@d32e4c)")

这可能是一个sqlite格式错误,因为它不喜欢查询中的“[”。 根据以下评论进行编辑 - 这是字节数组的.toString表示。如何正确地将字节数组转换为SQLite的insert语句?

0 个答案:

没有答案