java.sql.SQLException: ORA-01810: 格式代码出现两次

在项目中第一次遇到该错误是在项目中添加党员的时候。
添加党员需要添加创建日期,由于是自己封装的框架,针对日期类型的时候,遇到含有to_date等时,不需要外层添加单引号。

/**
     * 插入实体, 可插入含格式化日期描述的字符串
     */
    public static <T> boolean insertEntityWithDate(Class<T> entityClass, Map<String, Object> fieldMap) {

        if (CollectionUtil.isEmpty(fieldMap)) {
            LOGGER.error("can not insert entity: fieldMap is empty");
            return false;
        }

        String sql = "INSERT INTO " + tableName(entityClass);
        StringBuilder columns = new StringBuilder("(");
        StringBuilder values = new StringBuilder("(");
        for (String fieldName : fieldMap.keySet()) {
            columns.append(fieldName).append(", ");
            String value = fieldMap.get(fieldName).toString();
            if (value.toLowerCase().contains("to_date") || value.toLowerCase().contains("to_timestamp")) {
                values.append(value).append(",");
            } else {
                values.append("'").append(value).append("'").append(",");
            }
        }
        columns.replace(columns.lastIndexOf(", "), columns.length(), ")");
        values.replace(values.lastIndexOf(","), values.length(), ")");
        sql += columns + " VALUES " + values;
        return update(sql) == 1;

    }
/**
     * 执行更新语句(包括:update、insert、delete)
     */
    public static int update(String sql) {
        int rows = 0;
        try {
            Connection conn = getConnection();
            rows = QUERY_RUNNER.update(conn, sql);
        } catch (SQLException e) {
            LOGGER.error("execute update failure", e);
            throw new RuntimeException(e);
        }
        return rows;
    }

在封装对象的时候使用了如下:

pm.setCREATE_TIME(String.format("to_date('%s', 'yyyy-MM-dd HH:mm:ss')","sysdate"));

具体框架封装不用理会,这里指出问题是
oracle格式是不区分大小写的,所以MM和mm是一样的 可能会以月份的形式显示。所以oracle中用了mi来代替MM。

修改成(把mm改成mi)解决问题

pm.setCREATE_TIME(String.format("to_date('%s', 'yyyy-MM-dd HH:mi:ss')","sysdate"));

专业墙纸贴纸厨房用具装饰出售,本人网店经营,访问即是爱

博客对你有用记得访问下哦,增加下访问量,如有需要可以下单购买哦^_^。https://item.taobao.com/item.htm?id=570637716145

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值