【问题标题】:BatchUpdateException in PostgreSQL DatabasePostgreSQL 数据库中的 BatchUpdateException
【发布时间】:2017-08-02 06:51:38
【问题描述】:

通过文件将数据插入 PostgreSQl 时出现 BatchUpdateException

我得到的例外是:

批处理条目 0 {call PACKAGE_NAME.PROCEDURE_NAME()} 已中止。调用getNextException查看原因

源代码如下:-

successMsg = getJdbcTemplate().batchUpdate("{call "+ packageName +"."+ procedureName +sb.toString(),new BatchPreparedStatementSetter(){                 

        @Override
        public void setValues(PreparedStatement ps, int i) throws SQLException 
        {
            String values = insertList.get(i);
            String []valuesArray=values.split(",");
            int parameterCount=ApplicationConstant.ONE;
            for(int valueIndex=0;valueIndex<valuesArray.length;valueIndex++)
            {
                ps.setString(parameterCount++, String.valueOf(valuesArray[valueIndex])!=null?String.valueOf(valuesArray[valueIndex]).trim().replaceAll("@@@", ","):""); //added trim() in order to avoid blank space entry in DB.
            }
            if(financialMonth!=null&&!financialMonth.equals(""))
            {
                ps.setString(parameterCount++,"01-"+financialMonth);
            }
            ps.setInt(parameterCount++,loginBean.getUserId());
            ps.setDate(parameterCount, null);                       
        }   

        @Override
        public int getBatchSize()
        {
            return insertList.size();
        }

    }); 

【问题讨论】:

  • 当您遵循“调用 getNextException 以查看原因”的建议时,您得到了什么?

标签: postgresql jdbc batch-updates


【解决方案1】:

正如异常所说,你应该调用 getNextException 来查看原因。

try{
    successMsg = getJdbcTemplate().batchUpdate("{call "+ packageName +"."+ procedureName +sb.toString(),new BatchPreparedStatementSetter(){                 
} catch (SQLException se) {
    se.getNextException().printStackTrace();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2011-02-12
    • 2011-01-16
    相关资源
    最近更新 更多