读书人

oracle 数据库中定义了clob部类字段。

发布时间: 2013-03-17 13:48:32 作者: rapoo

oracle 数据库中定义了clob类型字段。。。
oracle中的clob类型字段,用的是jdbc 。 我在实体类中可以定义为String类型吗?

我的方法都是封装好的,我作为string类型,插入没问题,但是查询就有问题,可能是我插入的字符少吧。
以前没用过这类型,请高手指教。我该怎么定义,和操作。
网上的东西有点乱,看的有点懵
[解决办法]
可以定义成string类型,但是在查询结果的时候,需要特殊处理这个字段,以mybatis为例,此字段需要使用ClobTypeHandler处理才能正确显示。
你使用了什么持久化方案
[解决办法]
试试

public String ClobToString(Clob clob) {
String reString = "";
Reader is = null;
try {
is = clob.getCharacterStream();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 得到流
BufferedReader br = new BufferedReader(is);
String s = null;
try {
s = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringBuffer sb = new StringBuffer();
while (s != null) {
//执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
sb.append(s);
try {
s = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
reString = sb.toString();
return reString;
}

[解决办法]
将clob, blob理解为byte[]
循环取的时候:
byte[] temp_bytes= rs.getBytes("字段名");

----------------转换
String contentString="";
try {
if(bytes!=null && !bytes.equals("")){
contentString = new String(bytes, "gb2312");


}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return contentString;


[解决办法]
引用:
我在java中对应的字段直接定义为String类型, 然后直接保存和执行String类型的一样,可以吗


那倒是不大清楚 我以前弄的时候是以流的形式写入/输出 在写入之前将String类型字符串转为Blob流写入 输出的时候以流的形式读取 然后转换为String字符串输出

读书人网 >Java Web开发

热点推荐