2.2.2 使用execute查询数据
优质
小牛编辑
130浏览
2023-12-01
由于execute方法可以执行任何SQL语句,因此,execute方法并不直接返回ResultSet对象,而是通过一个boolean类型的值确定执行的是返回结果集的SQL语句(如SELECT),还是不返回结果集的SQL语句(如INSERT、UPDATE等)。execute方法的定义如下:
boolean execute(String sql) throws SQLException;
其中参数sql表示要执行的SQL语句。当sql为返回结果集的SQL语句时,execute方法返回true,否则返回false。当返回true时,可以通过getResultSet()方法返回ResultSet对象,如果返回false,可以通过getUpdateCount()方法返回被影响的记录数。这两个方法的定义如下:
ResultSet getResultSet() throws SQLException;
int getUpdateCount() throws SQLException;
用execute方法执行不返回结果集的SQL语句将在2.3.1节详细讲解,本节只介绍如何用execute执行返回结果集的SQL语句。
实例 使用execute查询数据
下面的示例演示了如何使用execute方法查询数据,并显示查询结果。在这个例子中使用SQL语句查询t_books表中的所有数据,并使用execute方法来执行这条查询语句,最后通过Statement接口的getResultSet方法获得查询后返回的ResultSet对象。示例的实现代码如下:
package chapter2;
import java.sql.*;
public class ResultSetFromExecute
{
public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost/mydb?characterEncoding=UTF8",
"root", "1234");
Statement stmt = conn.createStatement();
String selectData = "SELECT name FROM t_books";
// 执行查询语句
if (stmt.execute(selectData))
{
// 获得返回的ResultSet对象
ResultSet rs = stmt.getResultSet();
while (rs.next())
{
System.out.println(rs.getString("name"));
}
}
}
}
除了使用execute方法的返回值判断执行的是哪类SQL语句外,还可以通过getResultSet方法判断,如果执行的SQL语句不返回结果集,getResultSet方法返回null。