利用oracle long类型字段问题

原创 2005年05月25日 10:51:00

今天上午突然解决了这个问题,真是高兴,主要参考文章:

http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=123&threadID=17121&messageID=97829

 我在编写应用时,需要大量的插入大文本,但是oracle 的clob操作起来比较繁琐,应此我没有选择使用clob,而是使用了oracle以前版本中的long类型[但是long类型有一些限制,在一个表中只能有一个long字段]。
开始的时候我直接使用insert into table1 values(a,b[long])的方式插入数据库,但是oracle有些限制一条语句不能超过4000个字符,并报ORA-01704的错误。
经过查找oracle 的文档找到了解决的方法,就是对于long的字段使用setCharacterStream()方法将String插入数据库。

代码:
sql="insert into msg_info values (?,?,?,?[long类型字段],'C',sysdate,sysdate+"+msgterm+",?)";
pstat1 = conn.prepareStatement(sql);
pstat1.setLong(1, msg_id);
      pstat1.setInt(2, msg_gp_id);
      pstat1.setString(3, msg_title);
      pstat1.setCharacterStream(4,new StringReader(msg_info.toString()),msg_info.length());
conn.commit();

      pstat1.setLong(5, this.upid);

setCharacterStream

void setCharacterStream(int parameterIndex,
                        Reader reader,
                        int length)
                        throws SQLException
Sets the designated parameter to the given Reader object, which is the given number of characters long. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical to send it via a java.io.Reader object. The data will be read from the stream as needed until end-of-file is reached. The JDBC driver will do any necessary conversion from UNICODE to the database char format.

Note: This stream object can either be a standard Java stream object or your own subclass that implements the standard interface.

本来这个问题早就该解决,经验再次重复:API 非常重要,J2SE, J2EE , Oracle 的API,比任何参考书都有用!!!

还有就是要广泛利用资源.

再次感谢作者的那篇重要的文章!

现在还残留的问题是,我在oracle里面插入了blob(图片),也能正常显示,可是,用select 语句却看不见?!

现在不知道要找那个API了.....

版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle 数据库中 Long 类型字段的读取

最近在一个项目中遇到了需要读取 Oracle 数据库中的 Long 类型的字段的问题,折腾了好久,最后找到了其中的一个解决办法,决定记下了做个明灯吧!       这个项目用的是 Mybatis 做持...

Hibernate框架映射Oracle中long类型字段

Hibernate框架映射Oracle中long类型字段       第一次发博客,有不好之处望见谅。          好了,废话不多说,首先谈谈关于Oracle中的long类型。百度一下可知道...

Oracle中varchar2类型字段长度限制使用问题

为纪念中华人民共和国建军90周年,特此一篇,以此纪念,我军威武!!!一、问题背景项目中商品发布,却没有保存成功。二、问题定位初步判断向数据库中保存时出现了错误,查看日志文件,由于日志文件过大就采用gr...

oracle数据库中varchar类型字段中存放的有数字和汉字情况,比较大小问题解决

如果你也正在为这种问题头疼,当你看到我这篇博客时,恭喜你,问题的解决方案来了,你头疼的问题可以解决了。 这个问题是我在最近的项目中遇到的难题,上网查阅了很多资料,都没能解决问题,最后还是问了大牛,才解...

NHibernate中Oracle字段类型Clob数据长度过大问题

问题特别奇怪,按理说Clob字段不存在长度过大的问题,但在实际使用中却会提示这个问题。而且字符特别少时,没有问题,特别长时也没有问题,长度在在1千到五千之前就会有问题。实际上因为把Clob字段作为va...

ORACLE 中 VARCHAR2 类型的字段长度是按照 byte 来定义的 一个容易被忽略的问题

很多新手在建数据库或添加表、字段时,会这样忽略一个问题:ORACLE 中 VARCHAR2类型的字段长度是按照 byte 来定义的。如果数据库使用的字符集是 GBK,GB2312 或者其他定长字符集的...
  • qiuhan
  • qiuhan
  • 2015年01月06日 11:15
  • 2019

oracle里long类型

  • 2014年01月15日 10:16
  • 22KB
  • 下载

hibernate映射Oracle中LONG类型

  • 2013年01月11日 11:35
  • 163KB
  • 下载

Oracle long raw字段操作 oledb方式 asp.net

数据库表结构: -- Create table create table B2C_SPXSM_CXXX ( spid NUMBER not null, cxxx LONG RAW ); ...

long类型字段转换成varchar2类型

参考文档: How to Convert a Long to Varchar2 (文档 ID 228532.1) /*long类型字段转换成varchar2类型*/ --建表 create table...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用oracle long类型字段问题
举报原因:
原因补充:

(最多只允许输入30个字)