JDBC中execute(),executeQuery()和executeUpdate()方法的区别是什么?
在使用JDBC(Java Database Connectivity)连接数据库时,我们常会用到三个方法:execute(),executeQuery()和executeUpdate()。它们都是Statement接口中的方法,但是它们却有着不同的功能和返回值,下面我们来一一介绍。
阅读更多:MySQL 教程
execute()方法
execute()方法是一个通用方法,它可以执行任何SQL语句(如:SELECT,CREATE TABLE,INSERT,UPDATE,DELETE等),但是它不能返回任何结果集或是影响行数的值。如果需要获取结果集或者影响行数,需要在执行SQL语句之前先判断 SQL 语句的类型,然后调用 executeQuery() 或者 executeUpdate() 方法。
下面是一个示例代码:
String sql = "SELECT * FROM student WHERE age > 18"; //建立sql语句
Statement statement = connection.createStatement();
boolean hasResultSet = statement.execute(sql); // 执行SQL语句
if (hasResultSet) {
ResultSet resultSet = statement.getResultSet(); // 获取结果集
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
}
executeQuery()方法
executeQuery()方法只能用于执行 SELECT 语句,它返回一个包含查询结果的ResultSet对象。ResultSet中包含了查询结果集中的全部行和列。
下面是一个示例代码:
String sql = "SELECT * FROM student WHERE age > 18"; //建立sql语句
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql); // 执行SQL查询语句
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
executeUpdate()方法
executeUpdate()方法用于执行 INSERT、UPDATE 以及 DELETE 等 DML(Data Manipulation Language)语句,它返回一个整数,代表该操作对数据库中受影响的记录数。
下面是一个示例代码:
String sql = "UPDATE student SET age = 20 WHERE name = '张三'"; //建立sql语句
Statement statement = connection.createStatement();
int result = statement.executeUpdate(sql); // 执行SQL更新语句
System.out.println("影响行数:" + result);
结论
- execute()是通用方法,可执行任何SQL语句,但不能返回结果集或影响行数的值;
- executeQuery()只能执行SELECT语句,返回一个ResultSet对象,包含查询的结果集;
- executeUpdate()用于执行INSERT、UPDATE、DELETE等DML语句,返回受影响的记录数。
因此,在使用JDBC时,我们需要根据SQL语句的类型选择相应的方法,以获取正确的结果。