Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。

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

如:

//加载数据库驱动

Class.forName("com.MySQL.jdbc.Driver");

//使用DriverManager获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
                "root","1234");

//使用Connection来创建一个Statment对象
Statement  stmt = conn.createStatement();

//执行查询语句
ResultSet rs =stmt.executeQuery("select * from teacher");

//把查询结果输出来

while (rs.next())

{

System.out.println(rs.getInt(1) + "/t" +    rs.getString(2)); 
}

2>方法executeUpdate

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

如:

//加载数据库驱动

Class.forName("com.mysql.jdbc.Driver");

//使用DriverManager获取数据库连接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
                "root","1234");

//使用Connection来创建一个Statment对象

Statement  stmt = conn.createStatement(); 
//执行DML语句,返回受影响的记录条数

return stmt.executeUpdate(sql);

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

Class.forName(driver);

//获取数据库连接

conn = DriverManager.getConnection(url , user , pass); 
            //使用Connection来创建一个Statment对象 
            stmt = conn.createStatement();
            //执行SQL,返回boolean值表示是否包含ResultSet 
            boolean hasResultSet = stmt.execute(sql); 
            //如果执行后有ResultSet结果集

if (hasResultSet)

{

//获取结果集 
                rs = stmt.getResultSet();

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

int columnCount = rsmd.getColumnCount();
                //迭代输出ResultSet对象

while (rs.next())

{//依次输出每列的值
                    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() + "条");
            }

 
 
 
 
 
 
 
 
posted @ 2017-07-14 22:23 那一抹天空蓝 阅读(9633) 评论(0) 编辑 收藏
 
 

JDBC中execute、executeQuery和executeUpdate的区别的更多相关文章

  1. execute,executeQuery和executeUpdate的区别

    在jdbc中有3种执行sql的语句分别是execute,executeQuery和executeUpdate execute执行增删改查操作 execute返回的结果是个boolean型,当返回的是t ...

  2. JDBC中的Statement和PreparedStatement的区别

    JDBC中的Statement和PreparedStatement的区别  

  3. 请教JDBC中的thin和OCI的区别\

    请教JDBC中的thin和OCI的区别 https://zhidao.baidu.com/question/2267123737573204748.html

  4. JDBC中 execute 与 executeUpdate的区别

    相同点 execute与executeUpdate的相同点:都可以执行增加,删除,修改 不同点 execute可以执行查询语句 然后通过getResultSet,把结果集取出来 executeUpda ...

  5. [转] JDBC中的Statement和PreparedStatement的区别

    以Oracle为例吧 Statement为一条Sql语句生成执行计划,如果要执行两条sql语句select colume from table where colume=1;select colume ...

  6. jdbc中Statement和PreparedStatement有什么区别?哪个性能更好?

    Statement和PreparedStatement的功能主要是对sql语句的执行 区别 (1)Statement每执行一条sql语句就需要生成一条执行计划,执行100条就需要100条执行计划Pre ...

  7. JDBC中的Statement 和PreparedStatement的区别?

    PreparedStatement是预编译的SQL语句,效率高于Statement. PreparedStatement支持操作符,相对于Statement更加灵活. PreparedStatemen ...

  8. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别

    Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...

  9. mysql 中execute、executeQuery和executeUpdate之间的区别

    在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ...

随机推荐

  1. Java实现RSA密钥对并在加解密、加签验签中应用的实例

    一.项目结构 二.代码具体实现 1.密钥对生成的两种方式:一种生成公钥私文件,一种生成公钥私串 KeyPairGenUtil.java package com.wangjinxiang.genkey. ...

  2. Complex类的实现

    #include<iostream> #include<cmath> using namespace std; class complex{ public: complex() ...

  3. Cocos Creator 动态改变sprite图片

    首先将存放图片最外层文件夹命名为resources changeBj: function(){ var url = 'globalUI/video/gVideoPlayClick'; var _thi ...

  4. ArrayList 和 LinkList 的区别

    ArrayList 的相关知识 public class ArrayList<E> extends AbstractList<E>implements List<E> ...

  5. MAC 终端走代理服务器

    问题描述: MAC 终端,默认不走代理服务器:即浏览器已经可以FQ,但是终端不行: 解决方案:直接设置终端的代理,本文 用的是 shadowSocksX: 打开终端,直接执行:(执行后,只对当前终端起 ...

  6. Mysql复制一个数据库到另一个数据库

    mysqldump -u root -p source_db > /home/db_bak.sql #导出数据库 123456 #输入数据库密码 扩展: mysqldump -u root -p ...

  7. JS 全选、全不选、反选

    function checkReturn(obj) { var objIds = obj.value; //当没有选中某个子复选框时,checkboxall取消选中 if (!$("#sub ...

  8. 关于Axure RP软件的介绍——软件工程实践第二次个人作业

    关于Axure RP软件的介绍——软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...

  9. React Native之配置开发环境

    安装前注意: 1)在Max OS X 10.11(El Capitan)版本中,homebrew在安装软件时可能会碰到/usr/local目录不可写的权限问题.可以使用下面的命令修复: sudo ch ...

  10. Python中自定义filter用法

    django中新建项目,在项目中新建app,自定义filter一般放到app中.结构目录如下: 1.先在APP中新建一个templatetags的django文件夹,文件夹中新建一个filter的py ...