2010-05-22 77 views
2

我不确定如何使用Java/JDBC将很长的字符串插入到Oracle数据库中。如何使用Java/JDBC在Oracle数据库中存储长度超过4000个字符的字符串?

我有一个大于4000个字符的字符串,可以说它是6000.我想取这个字符串并将它存储在Oracle数据库中。

这样做的方式似乎与CLOB数据类型。好的,所以我将该列声明为描述CLOB。

现在,当需要实际插入数据时,我有一个准备好的语句pstmt。它看起来像pstmt = conn.prepareStatement(“INSERT INTO Table VALUES(?)”)

所以我想使用方法pstmt.setClob()。但是,我不知道如何用它创建一个Clob对象;没有构造函数(大概是因为它可能比可用内存大得多)。

如何将我的字符串放入Clob?

请记住,我不是一个非常有经验的程序员;请尽量保持尽可能简单的解释。效率,良好做法等在这里不是问题,我只是想要绝对最简单的解决方案。如果可能,我想避免下载其他软件包;现在我只使用JDK 1.4,标记为ojdbc14.jar。我已经环顾了一下,但是我没有能够遵循我找到的任何解释。

如果您有一个不使用Clobs的解决方案,我也会对此开放,但它必须是一列。

回答

7

你(至少)两个选项:

  • 使用connection.createClob()创建Clob,在其上设置数据,并将其设置在准备好的声明。这将适用于较小的数据

  • 使用preparedStatement.setClob(position, reader) - 在这里您将有一个Reader实例。

+0

啊,createClob()正是我一直在寻找。谢谢。 其实,我得到的错误: 线程“main”中的异常java.lang.AbstractMethodError:oracle.jdbc.driver.OracleConnection.createClob()Ljava/sql/Clob; 当我运行它。它来自以下行: Clob description = conn.createClob(); – Ventrue 2010-05-22 08:09:38

+2

这可能意味着您的jdbc驱动程序不是最新的。 – Bozho 2010-05-22 08:12:46

+0

那么,数据库是10.1.0.3,我没有在Oracle网站上看到该版本的任何JDBC驱动程序下载......我假设我拥有的是10.1.0.3,但我无法确定。 可能值得注意的是,我使用Class.forName(“oracle.jdbc.driver。OracleDriver“); ,而不是一个import语句,我对这件事并不十分了解,但看起来好像可能是相关的 – Ventrue 2010-05-22 08:51:51

1

这是一个example at oracle.com用于在Oracle和JDBC中使用LOB列。基本上,它为一个空的LOB(实际上是两个,因为它演示了BLOB和CLOB)插入一个LOB定位器,锁定该行进行更新,然后使用BLOB和CLOB OutputStream接口将数据写入LOB。当“SELECT ... FOR UPDATE”被释放时,LOB将在数据库中刷新并且新插入的数据将可见。

相关问题