【问题标题】:how to insert Blob into oracle database 11g using Vert.x?如何使用 Vert.x 将 Blob 插入到 oracle 数据库 11g?
【发布时间】:2016-12-01 15:30:39
【问题描述】:

我正在尝试使用 vert.x 将 BLob 插入 Oracle 数据库,我得到了上传文件

     for (FileUpload f : routingContext.fileUploads()){
         System.out.println("file name " + f.fileName());
         System.out.println("size name " + f.size());
         System.out.println("Uploaded File " + f.uploadedFileName());
     }

我已使用以下方法将 FileUpload 转换为字节数组:

 Buffer fileUploaded = routingContext.vertx().fileSystem().readFileBlocking(f.uploadedFileName());

 byte[] fileUploadedBytes = fileUploaded.getBytes();

现在我想将它直接插入 Oracle 数据库,我尝试使用 updateWithParams,但我不知道如何将 Blob 添加到查询参数中。 谢谢你的帮助

【问题讨论】:

  • 看看这个question。它解释了如何通过 jdbc 在 oracle db 中插入 Blob
  • 感谢@ZeusNet 的回答,但我使用的是JDBCClient Vertx,所以我必须使用queryWithParams 来创建preparedStatement,然后我无法调用setBinaryStream
  • 但是您可能可以将文件的字节包装到 JsonArray 中?我不熟悉 vert.x,但我会尝试一下
  • 是的,我尝试过使用它,但我收到此错误ORA-01461: can bind a LONG value only for insert into a LONG column,顺便说一下我在数据库中有一个 Blob 列
  • 你找到使用标准顶点操作保存它的方法了吗?

标签: java vert.x


【解决方案1】:

这是我解决我的问题的实现,现在我可以将文件 Blob 插入到 Oracle 数据库中,我希望将来对某人有所帮助。

 ByteArrayInputStream finalBis = bis;
    byte[] finalFileUploadedBytes = fileUploadedBytes;
    DB.getConnection(connection -> {
        if (connection.succeeded()) {
            CallableStatement stmt = null;
            try {
                stmt = connection.result().getConnection().prepareCall(SQL.INSERT_DOCS_QUERY);
                stmt.setBinaryStream(1, finalBis, finalFileUploadedBytes.length);
                stmt.setString(2,desiDoc);
                stmt.setString(3,sourDoc);
                logger.debug(stmt);
                stmt.execute();
                finalBis.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("nooot  ok");
        }
    });

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 2014-06-16
    • 2014-11-26
    • 2020-02-25
    • 2011-06-21
    • 2018-11-13
    • 1970-01-01
    • 2017-03-23
    • 2021-02-27
    相关资源
    最近更新 更多