zoukankan      html  css  js  c++  java
  • 往数据库中插入流数据的问题

          今天项目中有一个“印章管理”的功能,一直运行的没什么问题,今天突然在插入印章的时候出现了错误,后来跟了一下代码,发现当底层数据库为Postgresql时,我们将一个印章(也就是一个jpg的图片)写入数据库时,出现了错误。原来的插入代码如下:

           

    1.  PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (?, ?)");
    2.  ps.setString(1, file.getName());
    3.  ps.setBinaryStream(2, fis);

    问题出现在第三行,原来在Postgresql的JDBC驱动没有实现setBinaryStream(int parameterIndex, java.io.InputStream x)这个方法,而实现了

    void setBinaryStream(int parameterIndex, java.io.InputStream x, int length) throws SQLException方法,所以我们不能用ps.setBinaryStream(2, fis);而必须选择后一种方法,并将输入流的长度作为第三个参数传进去。

      最后,真心说一句:Postgresql真坑爹啊

  • 相关阅读:
    HTML页面下echarts图形绘制
    nth-child的运用
    黑客零做起
    回溯法-背包问题
    回溯法-迷宫问题
    ECMA概述
    微信小程序-蓝牙
    JavaScript实现千位分隔符
    Vue 就地复用策略
    内联函数inline
  • 原文地址:https://www.cnblogs.com/chenfei0801/p/2994542.html
Copyright © 2011-2022 走看看