[英]How to serialize byte array and store it into database using active android?
我有一个图像作为byte[]
,我需要将此图像保存在数据库中。 我为此使用Active Android库。 我知道db中用于此目的的数据类型应该是BLOB。 我知道byte[]
不能直接存储,我知道它应该序列化。 但是当我尝试将其序列化时 - 问题就出现了。
我试图将byte[]
转换为String
然后将其插入数据库 - 它工作:我将它保存在数据库中。 但是然后,当我从db取回该字符串并将其转换回字节数组时,该数组不等于第一个字节,因此当我尝试将此数组解码为图像时收到
skia:--- SkImageDecoder :: Factory返回null。
我的问题是:如何序列化字节数组,将其保存到数据库中,将其反序列化为字节数组,这将等于第一个? 我的意思是确切的步骤。
我真的在寻找如何解决这个问题很长一段时间,我恳请你不要在这里分享Active Android文档的链接或其他类的TypeSerializer
实现的例子 - 我看了很多次。 我需要的是如何逐步解决这个问题的方法。
编辑
我的TypeSerializer的当前代码,使我有机会使用Active Android在数据库中保存字节数组
public class ByteArraySerializer extends TypeSerializer {
@Override
public Class<?> getDeserializedType() {
return byte[].class;
}
@Override
public Class<?> getSerializedType() {
return String.class;
}
@Override
public Object serialize(Object o) {
if ( o != null ) {
return new String((byte[]) o);
}
return null;
}
@Override
public Object deserialize(Object o) {
if ( o != null ) {
String str = (String) o;
return str.getBytes();
}
return null;
}
}
我知道byte []不能直接存储
不正确。 byte[]
可以直接存储到BLOB
列中。
在JDBC中,您可以通过调用PreparedStatement.setBytes()
设置它,并通过调用ResultSet.getBytes()
获取它。
任何功能性ORM都应支持将BLOB
列映射到byte[]
字段。
对于Active Android,请参见以下链接:
您可能必须将byte[]
序列化为java.sql.Blob
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.