您现在的位置: 365建站网 > 365文章 > MySQL execute、executeUpdate、executeQuery的用法和区别

MySQL execute、executeUpdate、executeQuery的用法和区别

文章来源:365jz.com     点击数:1523    更新时间:2018-06-08 11:04   参与评论

execute、executeUpdate、executeQuery三者的用法和区别(及返回值)

一、boolean execute(String sql)

允许执行查询语句、更新语句、DDL语句。

返回值为true时,表示执行的是查询语句,可以通过getResultSet方法获取结果;返回值为false时,执行的是更新语句或DDL语句,getUpdateCount方法获取更新的记录数量。

例子:

</>code

  1. public static void main(String[] args) { 
  2.  
  3.  Connection conn = null; 
  4.  Statement stm = null; 
  5.  ResultSet rs = null; 
  6.  try { 
  7.   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
  8.   conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Test;user=sa;password=sasa"); 
  9.   stm = conn.createStatement(); 
  10.   boolean ret = stm.execute("select * from stuinfo"); 
  11.   if(ret){ 
  12.   rs = stm.getResultSet(); 
  13.   while(rs.next()){ 
  14.    System.out.println("姓名:"+rs.getString("stuName")+"\t年龄:"+rs.getString("stuScore")); 
  15.   } 
  16.   } 
  17.   ret = stm.execute("update stuinfo set stuScore=62 where stuname='张三'"); 
  18.   int count = stm.getUpdateCount(); 
  19.   if(!ret){ 
  20.   System.out.println(count+"条数据修改成功!"); 
  21.   } 
  22.  } catch (ClassNotFoundException e) { 
  23.   e.printStackTrace(); 
  24.  } catch (SQLException e) { 
  25.   e.printStackTrace(); 
  26.  }  
  27.  }

二、int executeUpdate(String sql)

执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

返回值是更新的记录数量

三、ResultSet executeQuery(String sql)

执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

execute是executeUpdate与executeQuery的综合


第一个例子显示如何通过使用文字字符串来创建一个预制语句,以提供语句的文本:

</>code

  1. mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
  2. mysql> SET @a = 3;
  3. mysql> SET @b = 4;
  4. mysql> EXECUTE stmt1 USING @a, @b;
  5. +------------+
  6. | hypotenuse |
  7. +------------+
  8. |          5 |
  9. +------------+
  10. mysql> DEALLOCATE PREPARE stmt1;

第二个例子是相似的,不同的是提供了语句的文本,作为一个用户变量:

</>code

  1. mysql> SET @s = 'set @a = SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
  2. mysql> PREPARE stmt2 FROM @s;
  3. mysql> SET @a = 6;
  4. mysql> SET @b = 8;
  5. mysql> EXECUTE stmt2 USING @a, @b;
  6. +------------+
  7. | hypotenuse |
  8. +------------+
  9. |         10 |
  10. +------------+
  11. mysql> DEALLOCATE PREPARE stmt2;

预制语句的SQL语法不能被用于带嵌套的风格中。也就是说,被传递给PREPARE的语句本身不能是一个PREPARE, EXECUTE或DEALLOCATE PREPARE语句。

预制语句的SQL语法与使用预制语句API调用不同。例如,您不能使用mysql_stmt_prepare() C API函数来预备一个PREPARE, EXECUTE或DEALLOCATE PREPARE语句。

预制语句的SQL语法可以在已存储的过程中使用,但是不能在已存储的函数或触发程序中使用。

    如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

    发表评论 (1523人查看0条评论)
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    昵称:
    最新评论
    ------分隔线----------------------------

    快速入口

    · 365软件
    · 杰创官网
    · 建站工具
    · 网站大全

    其它栏目

    · 建站教程
    · 365学习

    业务咨询

    · 技术支持
    · 服务时间:9:00-18:00
    365建站网二维码

    Powered by 365建站网 RSS地图 HTML地图

    copyright © 2013-2024 版权所有 鄂ICP备17013400号