100 请教: 用JAVA 如何实现对 DB2 CLOB 的插入,修改,查询操作?

tanguangbin 2005-09-02 04:33:58
用JAVA 如何实现对 DB2 CLOB 的插入,修改,查询操作?如果有HIBERNATE 操作 DB2 CLOB 的例子,加分。。。。
...全文
733 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengcg 2005-09-29
  • 打赏
  • 举报
回复
没有用过,不过用接口 java.sql.Clob 应该完全能够解决问题吧。
通过 getClob 进行查询,通过 setClob 进行插入、修改。下面是JDK提供的例子:
Clob notes = rs.getClob("NOTES");
java.io.InputStream in = notes.getAsciiStream();
java.io.Reader reader = notes.getCharacterStream();
String substring = notes.getSubString(10, 5);


Clob notes = rs.getClob("NOTES");
PreparedStatement pstmt = con.prepareStatement(
"UPDATE SALES_STATS SET COMMENTS = ? WHERE SALES > 500000");
pstmt.setClob(1, notes);
pstmt.executeUpdate();

野路子技术宅 2005-09-16
  • 打赏
  • 举报
回复
用setCharacterStream(position, reader, len);
===========================
//excute
preparedStatement ps = ..;
ps.set...
....
Clob c = ...;

setPsClob(ps, c, bean.getPosition());
..
}
===================================
public void setPsClob(PreparedStatement ps, Clob c,int position) {

StringBuffer buf = new StringBuffer();
Reader reader = null;
int len = 0;
ClobConvertBean cb = new ClobConvertBean();
cb = this.getClobConvertBean(c);
reader = cb.getReader();
len = cb.getLength();
try {
ps.setCharacterStream(position, reader, len);
} catch (SQLException e) {
e.printStackTrace();
}
}

public ClobConvertBean getClobConvertBean(Clob c) {
ClobConvertBean bean = new ClobConvertBean();
StringBuffer buf = new StringBuffer();
BufferedReader br = null;
StringReader sr = null;
boolean clobNotNull = false;
try {
if (c != null) {
br = new BufferedReader(c.getCharacterStream());
clobNotNull = true;
String line = null;
try {
while ((line = br.readLine()) != null) {
buf.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
if (clobNotNull && buf.toString().trim().length() > 0) {
StringReader bf = new StringReader(buf.toString());
bean.setReader(bf);
bean.setLength(buf.length());
} else {
StringReader bf = new StringReader(" ");
bean.setReader(bf);
bean.setLength(1);
}

return bean;

}
===========================
public class ClobConvertBean {
private Reader reader;
private int length = 0;
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public Reader getReader() {
return reader;
}
public void setReader(Reader reader) {
this.reader = reader;
}


}
wuguix 2005-09-12
  • 打赏
  • 举报
回复
我正在研究这个,但是查出来的结果是乱吗
录入
ByteArrayInputStream bai1 = new ByteArrayInputStream(tem.getBytes());
ps.setAsciiStream(i+1,bai1,bai1.available());


InputStream as =rs.getAsciiStream("body");
byte[] bt = new byte[as.available()];
int f=0;
while((f=as.read(bt))!=-1){
}
out.println(new String(bt));
tanguangbin 2005-09-09
  • 打赏
  • 举报
回复
老大我问的是CLOB 不是BLOB
heislazy 2005-09-07
  • 打赏
  • 举报
回复
//insert
stmt = con.prepareStatement("INSERT INTO BOOKCOVERS VALUES(?,?)");
File imageFile = new File("c:\\\\test.jpg");
InputStream inputStream = new FileInputStream(imageFile);
stmt.setString(1,"0738425826");
stmt.setBinaryStream(2,inputStream,(int)(imageFile.length()));
stmt.executeUpdate();

//select
stmt = con.prepareStatement("SELECT BOOKCOVER FROM BOOKCOVERS WHERE BOOKISBN=?");
stmt.setString(1, "0738425826");
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
// materialization of the Blob
Blob blob = resultSet.getBlob(1);
InputStream inputStream = blob.getBinaryStream();
File fileOutput = new File("e:\\songshe\\clonetest.jpg");
FileOutputStream fo = new FileOutputStream(fileOutput);
int c;
while ((c = inputStream.read()) != -1)
fo.write(c);
fo.close();
System.out.println("Blob retrieved");
}

以前有人问过
子陌红尘 2005-09-07
  • 打赏
  • 举报
回复
汗ing,回错帖子了,:(
子陌红尘 2005-09-07
  • 打赏
  • 举报
回复
如果你一开始就定义返回结果集的游标,只要在最后返回时OPEN一下那个游标就行了;
如果你在最后定义游标,那把游标定义和打开这部分用begin 和end;包含起来
本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及四种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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