(3)用jdbc处理sql语句(statement)

上一个篇文章,已经示例一个jdbc的入门程序,展现了如何建立jdbc连接,创建语句集,执行语句集得到结果集,结果集映射对象,关闭连接,释放资源的过程

这篇主要讲解statement的方法的使用:

1.语句集的种类

存在下面三种语句集:

  • Statement(不带参数的简单语句集)
  • PreparedStatement (预编译的sqL语句集,包含输入参数)
  • CallableStatement(用于执行存储过程和方法,包含输入参数和输出参数的设置)

这三种语句集分别从Connection 对象获取 :

Connection con =null;
//Statement : 不带参数的简单语句集
Statement statement  = con.createStatement();
//PreparedStatement :预编译的sqL语句集,包含输入参数
PreparedStatement  preparedStatement= con.prepareStatement(sql);
 //CallableStatement:用于执行存储过程和方法,包含输入参数和输出参数的设置,这个会在存储过程的章节讲解
CallableStatement callableStatement = con.prepareCall(proceduresOrFuntionSql);

2.执行语句集的方法

执行语句集可以使用下面的三个方式:

  • execute
  • executeQuery(执行select 语句集)
  • executeUpdate(执行insert,update,delete的语句集)
  • addBatch和executeBatch(批量执行语句集)

下面展示了如何从statement和preparedStatement执行语句集的情况,以及如何批量执行

//如果查询返回的第一个对象是ResultSet对象,则返回true,则可以调用
//Statement.getResultSet来获取ResultSet对象
//返回false,则说明获取不到ResultSet对象,此种可能是更新,删除,插入等操作
boolean tag =statement.execute(sql);
if(tag){
    ResultSet resultSet = statement.getResultSet();
        while(resultSet.next){
            //下面可以进行对象的映射
          }
}
//返回一个result对象
ResultSet resultSet =  statement.executeQuery(sql);
//返回受sqL语句的影响的行数的整数,但你用insert,delete,update语句集的时候使用
int  affectRow=statement.executeUpdate(sql);

//增加到一个批次的SQL语句集中
statement.addBatch(sql);
//返回的是一个数组,一次性执行sql的批量语句集,返回的是一个int数组对象,表示每个语句集受影响的行数
int[] affectRows =  statement.executeBatch();

//预编译的语句集执行不需要指明sql语句,创建的时候指定了
preparedStatement.execute();
preparedStatement.executeQuery();
preparedStatement.executeUpdate();
    原文作者:Mrsunup
    原文地址: https://www.jianshu.com/p/abe98b8516c1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞