【问题标题】:How to insert file into Oracle with jdbcTemplate?如何使用 jdbcTemplate 将文件插入 Oracle?
【发布时间】:2017-01-08 08:02:06
【问题描述】:

我试图将字节数组作为 SqlLobValue() 提供,但它不起作用。

public void sendEmailWithAccountInfoPDF(String toEmail, byte[] pdf) {
        String SQL_ADD_EMAIL = "insert into emails_for_sending " +
        "(to_email, attach_type, attach_name, attach_body) " +
        "values (:to_email, :attach_type, :attach_name, :attach_body);";

   Map<String, Object> params = new HashMap<>();
   params.put("to_email", toEmail);

   params.put("attach_type", "application/pdf");
   params.put("attach_name", "info.pdf");
   params.put("attach_body", new SqlLobValue(pdf));

   jdbcTemplate.update(SQL_ADD_EMAIL, params);
}

但它给了我“SqlLobValue 只支持 SQL 类型 Blob 和 Clob”。

如何使用 jdbcTemplate 将文件正确插入 Oracle?

【问题讨论】:

  • 发布完整的堆栈跟踪。异常是由 Spring 类引发的吗?如果是,请查找源代码以查看引发异常的原因。如果不是,attach_body 列实际上是 blob/clob 类型吗?

标签: java sql oracle jdbc blob


【解决方案1】:

LobCreator/LobHandler 为 LOB 输入和输出提供以下支持:

BLOB

byte[] – getBlobAsBytes 和 setBlobAsBytes

InputStream – getBlobAsBinaryStream 和 setBlobAsBinaryStream

CLOB

String – getClobAsString 和 setClobAsString

InputStream – getClobAsAsciiStream 和 setClobAsAsciiStream

Reader – getClobAsCharacterStream 和 setClobAsCharacterStream

【讨论】:

    猜你喜欢
    • 2019-03-20
    • 2011-03-11
    • 2017-07-24
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2012-10-04
    相关资源
    最近更新 更多