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。