OS X上的SQLite JDBC将BLOB中的空字节数组存储和检索为null

OS X上的SQLite JDBC将BLOB中的空字节数组存储和检索为null,sqlite,jdbc,null,bytearray,is-empty,Sqlite,Jdbc,Null,Bytearray,Is Empty,我很惊讶,我在谷歌上找不到关于这个的任何东西 我在应用程序中使用Sqlite jdbc 3.7.2。在Windows上,当我在BLOB字段中存储空字节数组时,SQLite列中的值为空。如果我在MacOS上也这样做,它将为空 在MacOS上,我现在得到很多NullPointerException,因为从DB返回的是null值,而不是空字节数组 我发现的唯一类似问题是 有没有人经历过同样的问题?有没有一个简单的方法来改变它 以下是表格结构: CREATE TABLE IF NOT EXISTS My

我很惊讶,我在谷歌上找不到关于这个的任何东西

我在应用程序中使用Sqlite jdbc 3.7.2。在Windows上,当我在BLOB字段中存储空字节数组时,SQLite列中的值为空。如果我在MacOS上也这样做,它将为空

在MacOS上,我现在得到很多NullPointerException,因为从DB返回的是null值,而不是空字节数组

我发现的唯一类似问题是

有没有人经历过同样的问题?有没有一个简单的方法来改变它

以下是表格结构:

CREATE TABLE IF NOT EXISTS MyTable(uid INTEGER, aNum INTEGER,  bNum INTEGER, aText TEXT, cNum INTEGER, dNum INTEGER, data BLOB, mask BLOB, bdata BLOB, PRIMARY KEY(uid, aNum, bNum, aText))
以下是插入的语句:

INSERT INTO MyTable VALUES(?,?,?,?,?,?,?,?,?)
在Java中,我这样做是为了将数据存储在sqlite中:

  String query="INSERT INTO MyTable VALUES(?,?,?,?,?,?,?,?,?)";
  PreparedStatement ret = this._connection.prepareStatement(query)
  preparedStatement.setInt(1, 123);
        //...
        preparedStatement.setBytes(7, new byte[0]);
        preparedStatement.setBytes(8, new byte[]{(byte)1,(byte)2});
        preparedStatement.setBytes(9, new byte[]{(byte)2,(byte)3});

        preparedStatement.execute();
要检索它,请执行以下操作:

现在数据为空,而不是空字节数组,但仅在OSX上。
谢谢

显示存储空字节数组的代码。@CL.我按照您的要求添加了代码。
[此处的空字节数组]
不是有效的Java。@CL.;-)干得好。我甚至还为您注释了“…”,在uid=123的MyTable中,
selecttypeof(data)的输出是什么?您是否在OSX上执行Java代码?
final byte[] data = resSet.getBytes(7);