1. Statement的execute()语句可以执行任何SQL语句,但是它比较麻烦,故通常应该使用executeQuery()或者executeUpdate()方法。
  2. 使用exrcute()方法执行只是返回boolean值,它表示执行该SQL语句是否返回了ResultSet对象,如果需要获取ResultSet对象的话,可以使用下面两个方法:
  1. getResultSet()获取该Statement执行查询语句后返回的ResultSet对象
  2. getUpdateCount()获取该Statement执行SQL语句后影响的记录行数
  1. 以下为代码示例,具体讲解穿插在代码中
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;

public class ExecuteSQL {

//    常规操作
    private String driver;
    private String url;
    private String user;
    private String pass;
    public void initParam(String paramFile) throws  Exception{
        Properties properties = new Properties();
        properties.load(new FileInputStream(paramFile));
        driver = properties.getProperty("driver");
        url = properties.getProperty("url");
        user = properties.getProperty("user");
        pass = properties.getProperty("pass");
    }
    public void executeSql(String sql) throws Exception{
        Class.forName(driver);
        try(
                Connection connection = DriverManager.getConnection(url, user, pass);
                Statement statement = connection.createStatement()){

            boolean hasResultSet = statement.execute(sql);
//            执行execute方法后返回boolean值

            if(hasResultSet){
                try(
                        ResultSet rs = statement.getResultSet()
//                获取结果集
                ){

                    ResultSetMetaData rsmd = rs.getMetaData();
//                    ResultSetMetaData是用于分析结果集的元数据接口

                    int columnCount = rsmd.getColumnCount();
//                    获取行数

                    while (rs.next()){
                        for(int i=0; i<columnCount; i++){
                            System.out.println(rs.getString(i+1) + "\t");
                        }
                        System.out.println();
                    }
                }
            }
            else {
                System.out.println("该sql语句影响的记录有" + statement.getUpdateCount() + "条");
            }
        }
    }

    public static void main(String args[]) throws  Exception{
        ExecuteSQL executeSQL = new ExecuteSQL();
        executeSQL.initParam("mysql.ini");
        System.out.println("删除表的DDL语句");
        executeSQL.executeSql("drop table if exists my_test");
        System.out.println("创建表的DDL语句");
        executeSQL.executeSql("create table my_test" +
                "(id int);");
        System.out.println("插入数据");
        executeSQL.executeSql("insert into my_test values (1);");
        System.out.println("查询所有数据");
        executeSQL.executeSql("select * from my_test");

    }
}

//执行上面的程序,得到以下运行结果
//        删除表的DDL语句
//        该sql语句影响的记录有0条
//        创建表的DDL语句
//        该sql语句影响的记录有0条
//        插入数据
//        该sql语句影响的记录有1条
//        查询所有数据
//        1