‘壹’ java String类型和blob类型转换
如果你的数据真的是 String ,那按理就是用 Clob 嘛。
Blob 主要用于二进制内容,比如图片,附件。
如果保持数据库表结构不变的话,用 blob 也行,但你需要在读取和写入两头明确地指定相同的字符集,否则读取这个还原过程会得到不到期望的结果。只要我们用支持这种字符的字符集理论上来说,只要编码和解码的过程使用相同的字符集就不会失真,如果字符集本身不支持这个字符(比如你拿一个只有康熙字典中才有的古汉字用 GB2312 字符集去处理就会失真,而用 UTF8 就可能正常,因为只要这个字符真的能被输入法录入到电脑中基本上它就已经表示有办法能处理它)。
PreparedStatement 中有 setBlob (JDBC 4.0) 或 setBinaryStream (早期) 方法。但你需要测试你使用的驱动程序是什么版本的与数据库是否匹配。
‘贰’ java String类型转换为Blob类型
java String类型转换为Blob类型的方法:
由于Blob类型存放的是字节数组,利用String的getBytes()方法获得该字符串的字节数组(注意编码方式),之后利用hibernate工具存入Blob即可。
publicstaticBlobgetBlogValue(StringstrValue,StringcharsetName){
BlobblobValue=null;
try{
//charset为“字符编码方式”
byte[]bytes=strValue.getBytes(charsetName);
System.out.println("byte[]:"+bytes);
blobValue=Hibernate.createBlob(bytes);
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
returnblobValue;
}