zoukankan      html  css  js  c++  java
  • execute、executeUpdate、executeQuery三者的区别(及返回值)

    1. ResultSet  executeQuery(String sql); 执行SQL查询,并返回ResultSet 对象。
     2.int              executeUpdate(String sql); 可执行增,删,改,返回执行受到影响的行数。
     3.boolean     execute(String sql); 可执行任何SQL语句,返回一个布尔值,表示是否返回ResultSet 。

    execute是executeQuery和executeUpdate的综合.

    使用哪一个方法由 SQL 语句所产生的内容决定。

    ---------------------------------------------------------------------------------------------------------------------------------------

    executeUpdate() 这是 PreparedStatement 接口中的方法
    executeUpdate(String sql) 这是 PreparedStatement 从父接口 Statement 中继承过来的方法

    executeUpdate() 中执行 SQL 语句需要在创建 PerparedStatement 时通过 Connection 的 prepareStatement(String sql) 方法中写出,因为 PerparedStatement 中的 SQL 语句数据库需要进行预编译和缓存,因此要在创建 PerparedStatement 对象时给出 SQL 语句。

    而 executeUpdate(String sql) 是 Statement 中的方法,参数中的 SQL 语句只是提交给数据库去执行,并不需要预编译。

    如果 SQL 语句中有 ? 占位符,那么在设置好占位符中的值后,必须使用 executeUpdate() 执行。而 executeUpdate(String sql) 只是提交一个 SQL 语句,且这个语句中不能带有 ? 占位符。

    ----------------------------------------------------------------------------------------------------------------------------------------

    1>方法executeQuery 
    用于产生单个结果集(ResultSet)的语句,例如:被执行最多的SELECT 语句。 
    这个方法被用来执行 SELECT 语句,但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。例如:

        Class.forName("com.mysql.jdbc.Driver");
        //加载数据库驱动
        Connection  conn = null;
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
                     "root","1234");
        //使用DriverManager获取数据库连接
        Statement  stmt = conn.createStatement();
        //使用Connection来创建一个Statment对象
        
        
        ResultSet rs =stmt.executeQuery("select * from teacher");
        //执行查询语句并且保存结果
        while (rs.next()){
                    System.out.println(rs.getInt(1) + "/t" +    rs.getString(2)); 
        }
        //把查询结果输出来

    2>方法executeUpdate

    用于执行 INSERTUPDATE DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLEDROP TABLE
    INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。
    executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。
    对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。例如:

      Class.forName("com.mysql.jdbc.Driver");
      //加载数据库驱动
      Connection  conn = null;
      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
             "root","1234");
      //使用DriverManager获取数据库连接
      Statement  stmt = conn.createStatement();
      //使用Connection来创建一个Statment对象
    
    
      return stmt.executeUpdate(sql);
      //执行DML语句,返回受影响的记录条数

    3>方法execute: 
        可用于执行任何SQL语句,返回一个boolean值,表明执行该SQL语句是否返回了ResultSet。
    如果执行后第一个结果是ResultSet,则返回true,否则返回false。
    但它执行SQL语句时比较麻烦,通常我们没有必要使用execute方法来执行SQL语句,而是使用executeQuery或executeUpdate更适合。
    但如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句了。例如:

      Class.forName(driver);
      //加载驱动
      Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
                                        "root","1234");
      //获取数据库连接
      stmt = conn.createStatement();
      //使用Connection来创建一个Statment对象 
      
    
      boolean hasResultSet = stmt.execute(sql); 
      //执行SQL,返回boolean值表示是否包含ResultSet          
      if (hasResultSet) { //如果执行后有ResultSet结果集
            rs = stmt.getResultSet();
            //获取结果集 
       
            ResultSetMetaData rsmd = rs.getMetaData();
            //ResultSetMetaData是用于分析结果集的元数据接口 
            int  columnCount = rsmd.getColumnCount();
       
            while (rs.next()){//输出ResultSet对象
                 for (int i = 0 ; i < columnCount ; i++ ) {
                     System.out.print(rs.getString(i + 1) + "/t");
                 }  
                 System.out.print("/n");
            } 
       } else  {
             System.out.println("该SQL语句影响的记录有" + stmt.getUpdateCount() + "条");
      }  

    参考:http://blog.csdn.net/u012830807/article/details/17333331

              https://www.cnblogs.com/bukudekong/archive/2011/06/22/2086531.html

              http://home.bdqn.cn/thread-51278-1-1.html

    个人学习记录

    可供参考

    2017-11-18  09:00:13

  • 相关阅读:
    Windows Store App 主题动画
    Windows Store App 过渡动画
    Windows Store App 控件动画
    Windows Store App 近期访问列表
    Windows Store App 文件选取器
    Windows Store App 访问应用内部文件
    Windows Store App 用户库文件分组
    Windows Store App 获取文件及文件夹列表
    Windows Store App 用户库文件夹操作
    Windows Store App 用户库文件操作
  • 原文地址:https://www.cnblogs.com/angelye/p/7855906.html
Copyright © 2011-2022 走看看