2

次のコードを使用してデータベースに新しい行を挿入しています。最後に挿入された行の ID を取得する必要がありますが、コードを実行すると次のメッセージが表示されます。

SEVERE: java.sql.SQLException: Generated keys not requested. You need to specify   
Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or 
Connection.prepareStatement().

次のコードを使用すると、 executeUpdate(String sql) を選択してもエラーが発生します

  ps.executeUpdate(ps.RETURN_GENERATED_KEYS);
  error >> no suitable method found for executeUpdate(int)

表は次のとおりです。

       credential 
          int         ID   primary key, auto increment
          varchar(10) name 

私のコード

String Insert_Credential = "Insert into credential values("
                    + "?,?)";
            ps = con.prepareStatement(Insert_Credential);
            ps.setInt(1, 0);
            ps.setString(2, "username");
            ps.executeUpdate();
            ResultSet generatedKeys = ps.getGeneratedKeys();
        if (generatedKeys.next()) {
             System.out.println("id is"+generatedKeys.getLong(1));
             return generatedKeys.getInt(1);
        } else {
            throw new SQLException("Creating user failed, no generated key obtained.");
        }
4

1 に答える 1

6
ps.executeUpdate(ps.RETURN_GENERATED_KEYS)

あなたはそれを発明しました。存在しません。

ps = con.prepareStatement(Insert_Credential);

PreparedStatement生成されたキーを返すようにも指示しません。あなたはこれを必要とします:

ps = con.prepareStatement(Insert_Credential, Statement.RETURN_GENERATED_KEYS);
于 2013-02-13T02:21:35.883 に答える