oracle的clob类型存储fckeditor content内容的问题

fenix525 2010-04-26 08:30:43
各位高人:
今天,我采用jsp+fckeditor来做一个文本编辑器,用request.getparameter("content")从界面上获取内容,而后勇system.out.println()显示获取的内容,显示正常,可是,当我把这个String保存入oracle的clob类型的时候,发现保存的内容是oracle.sql.CLOB@191e4c,请问,这个是乱码么?如果不是乱码,那么应该怎么读取成为能够用out.println();显示的内容呢?是不是需要进行什么编码转换呢?该怎么转换呢?
如果有哪位高人能够指点一下,感激不尽!

附上我的程序
String content=request.getParameter("content");
System.out.println(content);
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:jypt", "renzhong", "renzhong");
//处理事务
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象
String 就业信息编号=GetDate.getNowDate().substring(0,22);
ResultSet rs = st.executeQuery("insert into Table_就业信息 values('"+就业信息编号+"','','','','',"+"empty_clob())");

用for update方式锁定数据行
rs = st.executeQuery(
"select 内容 from Table_就业信息 where 就业信息编号='"+就业信息编号+"' for update");
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("内容");
clob.putString(1, content);
st.executeUpdate(" update Table_就业信息 set 内容='"+clob+"' where 就业信息编号="+"'"+就业信息编号+"'");
}
con.commit();
st.close();
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

/*****************************************************************************
* 开始查询,从数据库中读出原来保存的内容,看看是否能够正常显示,以验证数据库中存储数据是否正确
*****************************************************************************/
String sql="select dbms_lob.substr(内容) from Table_就业信息 where 就业信息编号='2010-04-23 13:19:56 下午'";
StringBuffer sbResult=new StringBuffer();

Connection Conn=null;
Statement stmt=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:jypt", "renzhong", "renzhong");

ResultSet rs = null;

stmt = Conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs=stmt.executeQuery(sql);
while (rs.next()){
CLOB clob=(CLOB)rs.getClob(1);
Reader isClob=clob.getCharacterStream();//创建输入流
BufferedReader bfClob=new BufferedReader(isClob);//创建从字符输入流读取文本
String strClob=bfClob.readLine();//读取一行文本
while(strClob!=null){
sbResult.append(strClob);//添加到字符串
strClob =bfClob.readLine();//继续读取下一行
}
}}catch (Exception errr){
System.out.print(errr);
}finally{
try {
stmt.close();
Conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

System.out.print(sbResult.toString());

...全文
120 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kokobox 2010-04-26
  • 打赏
  • 举报
回复
不用这么麻烦,你把clob字段当成varchar2类型的操作就可以了,oracle自动回转存。不需要你另外操作。因为你只是想存储内容而已。

zjwilove4 2010-04-26
  • 打赏
  • 举报
回复
不是乱码
oracle.sql.CLOB@191e4c是内存地址

其他的就不清楚哦 没使用过原生的JDBC控制Blob
justwalking 2010-04-26
  • 打赏
  • 举报
回复
用过用spring处理clob的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧