Java 语句中的executeUpdate(String,int)方法始终返回1

Java 语句中的executeUpdate(String,int)方法始终返回1,java,mysql,jdbc,Java,Mysql,Jdbc,有人能告诉我为什么下面的方法(executeUpdate)总是返回1,即使我已经指定返回其中生成的密钥?我想在generatedKey变量中获取生成的密钥。使用getGeneratedKeys,它对PreparedStatement很好,但我想使用语句 public int testQuery(Connection con) { int generatedKey = 0; try { Statement statement =

有人能告诉我为什么下面的方法(
executeUpdate
)总是返回1,即使我已经指定返回其中生成的密钥?我想在
generatedKey
变量中获取生成的密钥。使用
getGeneratedKeys
,它对
PreparedStatement
很好,但我想使用
语句

    public int testQuery(Connection con) {

        int generatedKey = 0;

        try {

            Statement statement = con.createStatement();
            generatedKey = statement.executeUpdate("INSERT INTO profile (fullname) VALUES ('Visruth CV')", Statement.RETURN_GENERATED_KEYS);

        } catch (SQLException e) {          
            e.printStackTrace();
        } finally {
           try { 
               con.close();
           } catch(Exception ex) {
               ex.printStackTrace();
           }
        }
        System.out.println("generated key : "+generatedKey);

        return generatedKey;
    }
根据
executeUpdate(字符串sql,int autoGeneratedKeys)
的文档,它说:

Executes the given SQL statement and signals the driver with the given flag about whether the auto-generated keys produced by this Statement object should be made available for retrieval. The driver will ignore the flag if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

Parameters:
    sql an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE; or an SQL statement that returns nothing, such as a DDL statement.
    autoGeneratedKeys a flag indicating whether auto-generated keys should be made available for retrieval; one of the following constants: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
Returns:
    either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
Throws:
    SQLException - if a database access error occurs, this method is called on a closed Statement, the given SQL statement returns a ResultSet object, or the given constant is not one of those allowed
    SQLFeatureNotSupportedException - if the JDBC driver does not support this method with a constant of Statement.RETURN_GENERATED_KEYS
Since:
    1.4

它在您粘贴的javadoc中显示:

returns: either (1) the row count for SQL Data Manipulation Language or (2) 0 for SQL statements that return nothing
它返回1,因为您总是只插入1个值。它不会返回生成的密钥

要获取生成的密钥,需要运行以下行:

rs = stmt.getGeneratedKeys()

如果您阅读了文档的
返回部分,它不会说它将返回生成的密钥。它返回行计数或0


执行语句后使用以获取生成的密钥。

您是否阅读了引用的文档?@Mark Rotterveel,我的重点是“
autoGeneratedKeys指示是否应使自动生成的密钥可供检索的标志;以下常量之一:Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
”。现在我被提醒,不仅
getGeneratedKeys
方法在
PreparedStatement
类中可用,而且在
Statement
类中也可用。经过很长时间的使用jdbc后,这就是问题所在。