引起:java.sql.SQLSyntaxErrorException:ORA-01747:user.table.column,table.column或列规范无效

时间:2016-06-23 07:28:20

标签: mysql oracle

当我按照代码运行时,我收到以下错误。

public Consent insert(Consent c) {

    PreparedStatement ps = null;
    try {
        ps = conn.prepareStatement(
                "INSERT INTO KIT.CONSENT (tr_number, customer, id_data, user, fk_user) "
                + "VALUES (?, ?, ?, ?, ?)",
                new String[] { "ID" });

        ps.setString(1, c.getTr_number());
        ps.setString(2, c.getCustomer());
        ps.setString(3, c.getId_data());
        ps.setString(4, c.getUser());
        ps.setInt(5, c.getFk_user());

        ps.executeUpdate();

        ResultSet rs = ps.getGeneratedKeys();
        while(rs.next()){
        int id = rs.getInt(1);
        c.setId(id);
        }

    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException(e);
    }

错误:

引起:java.sql.SQLSyntaxErrorException:ORA-01747:user.table.column,table.column或列规范无效

此代码适用于MySQL,但在Oracle中引发了以下错误

1 个答案:

答案 0 :(得分:2)

ORA-01747 - 您使用保留字作为列名。如果您尝试使用列名用户创建表,则会出现错误。您已使用列名称" user"创建了表格。这与用户不同,现在插入时应使用" user"作为列名。

INSERT INTO KIT.CONSENT (tr_number, customer, id_data, "user", fk_user) 

建议不要将保留字用作列名