
MySQL中execute、executeUpdate、executeQuery的区别
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本文章详细解释了在MySQL数据库操作中,execute、executeUpdate和executeQuery这三个方法的不同之处及其应用场景。帮助开发者更好地理解和使用这些SQL执行方式。
在MySQL数据库操作过程中,Statement对象用于执行SQL语句是非常常见的做法。这个对象提供了三种方法:`execute(String sql)`、`executeUpdate(String sql)` 和 `executeQuery(String sql)`,它们各自有不同的用途及返回值类型。
1. **boolean execute(String sql)**
这个方法可以处理各种类型的SQL指令,包括查询(SELECT)、更新(INSERT、UPDATE、DELETE)以及数据定义语言(DDL, 如CREATE TABLE和ALTER TABLE)。当执行的是查询语句时,它会返回`true`,此时可以通过调用`getResultSet()` 方法来获取结果集;若执行的是一条更新或DDL指令,则返回值为`false`, 此时使用 `getUpdateCount()` 来获得受影响的数据行数。例如:
```java
boolean rs = stm.execute(SELECT * FROM stuinfo);
if (rs) {
ResultSet resultSet = stm.getResultSet();
while(resultSet.next()){
System.out.println(姓名: + resultSet.getString(stuName) + 年龄: + resultSet.getInt(stuScore));
}
}
int updateCount = stm.executeUpdate(UPDATE stuinfo SET stuScore=62 WHERE stuname=张三);
System.out.println(updateCount + 条数据修改成功!);
```
2. **int executeUpdate(String sql)**
这个方法专门用于执行那些会改变数据库状态的SQL语句,如INSERT、UPDATE、DELETE和DDL等。返回值是受影响的数据行数;对于DDL指令来说,通常不涉及具体数据量的变化,因此它的返回结果通常是0。例如:
```java
int count = stm.executeUpdate(UPDATE stuinfo SET stuScore=62 WHERE stuname=张三);
System.out.println(count + 条数据修改成功!);
```
3. **ResultSet executeQuery(String sql)**
这个方法用于执行返回单个`ResultSet`对象的SQL语句,通常这些指令是SELECT查询。结果集可以通过遍历获取到查询的数据。例如:
```java
ResultSet rs = stm.executeQuery(SELECT * FROM stuinfo);
while(rs.next()){
System.out.println(姓名: + rs.getString(stuName) + 年龄: + rs.getInt(stuScore));
}
```
综上所述,`execute()` 方法是一个通用方法,可以处理多种类型的SQL语句,但使用时需要根据返回值来判断具体的SQL类型。而 `executeUpdate()` 和 `executeQuery()` 则更为具体,分别适用于更新操作和查询操作,并且它们的返回结果直接反映了执行的效果,在编写代码时如果已知SQL指令的具体类型,则优先考虑使用这两个方法会更加直观清晰。
全部评论 (0)


