execute、executeUpdate、executeQuery三者的用法和区别(及返回值)
一、boolean execute(String sql)
允许执行查询语句、更新语句、DDL语句。
返回值为true时,表示执行的是查询语句,可以通过getResultSet方法获取结果;返回值为false时,执行的是更新语句或DDL语句,getUpdateCount方法获取更新的记录数量。
例子:
</>code
- public static void main(String[] args) {
- Connection conn = null;
- Statement stm = null;
- ResultSet rs = null;
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Test;user=sa;password=sasa");
- stm = conn.createStatement();
- boolean ret = stm.execute("select * from stuinfo");
- if(ret){
- rs = stm.getResultSet();
- while(rs.next()){
- System.out.println("姓名:"+rs.getString("stuName")+"\t年龄:"+rs.getString("stuScore"));
- }
- }
- ret = stm.execute("update stuinfo set stuScore=62 where stuname='张三'");
- int count = stm.getUpdateCount();
- if(!ret){
- System.out.println(count+"条数据修改成功!");
- }
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
二、int executeUpdate(String sql)
执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
返回值是更新的记录数量
三、ResultSet executeQuery(String sql)
执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
execute是executeUpdate与executeQuery的综合
第一个例子显示如何通过使用文字字符串来创建一个预制语句,以提供语句的文本:
</>code
- mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
- mysql> SET @a = 3;
- mysql> SET @b = 4;
- mysql> EXECUTE stmt1 USING @a, @b;
- +------------+
- | hypotenuse |
- +------------+
- | 5 |
- +------------+
- mysql> DEALLOCATE PREPARE stmt1;
第二个例子是相似的,不同的是提供了语句的文本,作为一个用户变量:
</>code
- mysql> SET @s = 'set @a = SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
- mysql> PREPARE stmt2 FROM @s;
- mysql> SET @a = 6;
- mysql> SET @b = 8;
- mysql> EXECUTE stmt2 USING @a, @b;
- +------------+
- | hypotenuse |
- +------------+
- | 10 |
- +------------+
- mysql> DEALLOCATE PREPARE stmt2;
预制语句的SQL语法不能被用于带嵌套的风格中。也就是说,被传递给PREPARE的语句本身不能是一个PREPARE, EXECUTE或DEALLOCATE PREPARE语句。
预制语句的SQL语法与使用预制语句API调用不同。例如,您不能使用mysql_stmt_prepare() C API函数来预备一个PREPARE, EXECUTE或DEALLOCATE PREPARE语句。
预制语句的SQL语法可以在已存储的过程中使用,但是不能在已存储的函数或触发程序中使用。
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛