MySQL Java PreparedStatement 实现获取最后插入的ID


<!–

–>

MySQL Java PreparedStatement 实现获取最后插入的ID

在使用MySQL数据库时,我们有时需要获取最后插入的ID,以便将此ID用作下一步的操作。PreparedStatement是执行SQL语句的一种方法,而获取最后插入的ID也可以通过PreparedStatement来实现。

阅读更多:

PreparedStatement基础知识

PreparedStatement是Java提供的一种执行SQL语句的方式。与Statement相比,PreparedStatement具有更高的性能和更大的灵活性。使用PreparedStatement可以通过占位符和参数化值来执行SQL语句,而不是直接将值直接拼接到SQL语句中,从而避免了SQL注入攻击。

(adsbygoogle = window.adsbygoogle || []).push({});

下面是使用PreparedStatement插入数据到MySQL数据库的示例:

try {
   String insertQuery = "INSERT INTO users (name, age) VALUES (?, ?)";
   PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
   preparedStatement.setString(1, "John Doe");
   preparedStatement.setInt(2, 30);
   preparedStatement.executeUpdate();
} catch (SQLException e) {
   e.printStackTrace();
}

获取最后插入的ID

在通过PreparedStatement执行完SQL语句后,可以通过getGeneratedKeys()方法来获取最后插入的ID。getGeneratedKeys()方法返回一个ResultSet对象,该对象包含了最后插入的ID和其他生成的键。需要使用next()方法将ResultSet指向第一个行(即最后插入的ID所在的行),才能使用getInt()或getLong()等方法来获取实际的值。

下面是使用PreparedStatement获取最后插入的ID的示例代码:

try {
   String insertQuery = "INSERT INTO users (name, age) VALUES (?, ?)";
   PreparedStatement preparedStatement = connection.prepareStatement(insertQuery, Statement.RETURN_GENERATED_KEYS);
   preparedStatement.setString(1, "John Doe");
   preparedStatement.setInt(2, 30);
   preparedStatement.executeUpdate();
   ResultSet resultSet = preparedStatement.getGeneratedKeys();
   if (resultSet.next()) {
       int lastInsertId = resultSet.getInt(1);
       System.out.println("Last inserted ID: " + lastInsertId);
   }
} catch (SQLException e) {
   e.printStackTrace();
}

需要注意的是,必须在PreparedStatement创建时使用Statement.RETURN_GENERATED_KEYS参数来告诉数据库返回创建的键。

总结

PreparedStatement是执行SQL语句的一种高效和灵活的方法,在插入数据时可以使用PreparedStatement来获取最后插入的ID,以便用于下一步的操作。在获取最后插入的ID时,需要在PreparedStatement创建时使用Statement.RETURN_GENERATED_KEYS参数,并使用getGeneratedKeys()方法获取ResultSet对象。通过next()方法将ResultSet指向第一个行,然后使用getInt()或getLong()方法获取实际的值。