场景:使用mysql 的 blob 存储 protobuf 数据
1:写入数据库
Message.Builder builder=null;
PreparedStatement pre = null;
try {
String sql = "insert into " + tableName + " values (?,?)";
pre = connection.prepareStatement(sql);
// 写入数据库,要把它改写为流的形式
ByteArrayInputStream stream = new ByteArrayInputStream(builder
.build().toByteArray());
pre.setLong(1, uid);
pre.setBlob(2, stream, stream.available());
pre.execute();
} catch (SQLException e) {
e.printStackTrace();
}
2:读取数据库数据
if (resultSet != null) {
try {
if (resultSet.next()) {
String label = "data";
if (resultSet.getBoolean(label)) {
java.sql.Blob blob = resultSet.getBlob(label);
try {
byte[] b = blob.getBytes(1, (int) blob.length());
buildUserMessage userBlobBuilder = null;
//解析相关的数据
userBlobBuilder = buildUserMessage.parseFrom(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}