当我按照代码运行时,我收到以下错误。
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中引发了以下错误
答案 0 :(得分:2)
ORA-01747 - 您使用保留字作为列名。如果您尝试使用列名用户创建表,则会出现错误。您已使用列名称" user"创建了表格。这与用户不同,现在插入时应使用" user"作为列名。
INSERT INTO KIT.CONSENT (tr_number, customer, id_data, "user", fk_user)
建议不要将保留字用作列名