2016-06-23 228 views
2

次のコードを実行しているときに、次のエラーが発生しています。原因:java.sql.SQLSyntaxErrorException:ORA-01747:無効なuser.table.column、table.column、または列の指定

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

列名として予約語を使用することは推奨されません、そのユーザーは、Oracleの予約語で、列名の – Mottor

+0

はい男を使用すべきではありません。ユーザーのためにOracleの予約語です。問題は解決した。 – Musa

答えて

2

ORA-01747 - 列名として予約語を使用しています。カラム名userを持つテーブルを作成しようとすると、エラーが発生します。ユーザとは異なるカラム名 "user"を持つテーブルを作成しましたが、挿入するときにカラム名として "user"を使用する必要があります。

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

私が考える

関連する問題