语句简介
所有 SQL 查询都可以有条件地分为两组:
- 检索数据- 这些包括SELECT语句。
- 修改数据——包括INSERT、UPDATE和DELETE语句。
对于第一组,使用我们已经熟悉的Statement接口方法- executeQuery()。原则上,这种方法已经足够入门了。它涵盖了您在实际工作中需要使用的很大一部分查询。
我们稍后会讨论更多选项,但现在,我建议您记住——如果您只想从表中获取数据,那么在绝大多数情况下executeQuery()方法将是正确的选择。
对于第二组请求,您需要使用 Statement 接口的另一个方法 - executeUpdate()。与返回 ResultSet的 executeQuery()方法不同,此方法返回一个整数,告诉您在执行查询时表中有多少行被更改。
例如,您可以使用DELETE FROM employee 语句删除所有行(因此要非常小心)。在这种情况下,executeUpdate()方法将返回已删除的行数。在某些情况下,了解更改的行数对于构建处理数据的算法很有用。
原则上,我们可以完成这道题——我们已经看到了主要的东西。对于数据获取 - executeQuery()。更改数据 - executeUpdate()。
使用executeQuery()方法获取用户表中的用户数:
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
执行更新()
当您的查询更改表中的某些内容时,将使用executeUpdate()方法。它可以是任何东西:
- 更新语句
- 插入语句
- 删除语句
- CALL PROCEDURE语句
此方法返回更改(或删除)的行数。
让我们写一个请求,将我们所有员工的工资增加 1000 卢布。
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
在我运行这段代码后,它在我的表上返回了数字 6。我的表有 6 行。所以所有的线都被改变了。
执行()
有时,当您不确切知道必须执行什么请求(选择或数据更改)时,您的生活中可能会出现这种情况。在这种情况下,JDBC 的创建者为其添加了另一个通用方法 - execute()。
此方法可用于代替executeQuery()和executeUpdate()方法。您还记得这些方法有何不同吗?正确的。结果类型。因此,JDBC 的创造者想出了这样的解决方案。
execute()方法返回布尔值。如果此值为true,则表示正在进行数据提取请求,您需要调用getResultSet()方法来获取数据。例子:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
如果此值为false,则正在进行数据更改请求,您需要调用getUpdateCount()方法来获取更改的行数。例子:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
让我们编写一个显示查询结果的方法:
public void executeAndPrintSQLQuery(String sqlQuery) {
boolean hasResults = statement.execute(sqlQuery);
if ( hasResults ) {
ResultSet results = statement.getResultSet();
System.out.println(“Your request lines below: ”);
while (results.next()) {
Integer id = results.getInt(1);
String name = results.getString(2);
System.out.println(results.getRow() + ". " + id + "\t"+ name);
}
}
else {
int count = statement.getUpdateCount();
System.out.println(“Number of name strings: ” + count);
}
}
这就是execute()方法通常在实践中的使用方式。
GO TO FULL VERSION