上一个篇文章,已经示例一个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();