java数据库编程(4) 使用execute方法执行SQL语句

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

    这是我看李刚编著的《疯狂Java讲义》后总结出来的。

展开阅读全文

没有更多推荐了,返回首页