【问题标题】:How to Insert in Oracle using java如何使用 java 在 Oracle 中插入
【发布时间】:2013-01-19 05:53:33
【问题描述】:

我在 Oracle 数据库中有 CLOB 列,我想插入字符串。

如果我使用 setCharacterStream,它可以工作,但是如何通过 setBytes 插入字符串却出现异常。 请帮帮我。

String s = "Hello How are you Data for CLOB column";
ps.setCharacterStream(1, new StringReader(s), s.length());
ps.setByte(1,Byte.parseByte(s));

异常跟踪:

java.lang.NumberFormatException: For input string: "Hello How are you Data for CLOB column"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:447)
    at java.lang.Byte.parseByte(Byte.java:151)
    at java.lang.Byte.parseByte(Byte.java:108)
    at colb.test.InertClob.main(InertClob.java:24)

【问题讨论】:

  • 这里有两个很好的例子:Handling CLOBS made easy 和 Adding large object type to databaase。我确实不认为您根本需要“setByte()”。恕我直言...
  • @paulsm4 谢谢....这么好的链接我什至没有想到这么好的 pstmt.setString(1, str);....?如果您可以将此作为答案.....
  • 我的荣幸。很高兴它有帮助!
  • setString 在这里是错误的。可能有效/可能无效,您应该将字节数组存储到 Blob 字段中。
  • 你好吗?为什么你说这可能有效也可能无效 请解释一下……我没有问关于 BLOB 的问题。

标签: java sql oracle jdbc prepared-statement


【解决方案1】:

这里有两个很好的例子(带有示例代码,用于选择和插入):

  • 轻松处理 CLOBS:

http://rocksolutions.wordpress.com/2010/06/07/handling-clobs-made-easy-with-oracle-jdbc-10g/

  • 向数据库添加大对象类型

http://docs.oracle.com/javase/tutorial/jdbc/basics/blob.html

【讨论】:

    【解决方案2】:

    请参考Java API DOC

    将字符串参数解析为带符号的十进制字节。字符串中的字符必须都是十进制数字,

    【讨论】:

      【解决方案3】:

      你应该:

      1. 例如通过调用 s.getBytes() 或任何其他方法将字符串转换为字节数组。
      2. 调用setBytes方法,而不是setByte

      3. 从数据库中检索时,不要忘记您是如何获取字节的,以便正确恢复字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多