statement和prepareStatement 的区别

statement和prepareStatement 的区别,第1张

🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步

🍅 欢迎点赞 👍 收藏 ⭐留言 📝

一、【粉丝福利】


送书啦,大家期待已久的Vue!

本次活动送书规则:

【送书啦】

1、社区积分榜前5名,随机抽取一名幸运者

2、社区积分榜6-15名,随机抽取一名幸运者

3、社区积分榜16-30名,随机抽取一名幸运者

【赚取积分方式】哪吒社区内发帖、点赞、评论都可赢取积分!

🍅 社区入口:[哪吒社区](()

[](()

🍅 哪吒社区技能树打卡贴:[【打卡贴 day7】String、StringBuilder、StringBuffer详解](()

【抽取方式】Java随机函数;

【抽取时间】2021年11月2日 周二 21点整,抽取结果会在【哪吒微信一群、二群、三群】同时公布。

以下图书,四选一!

1、Vue.js全家桶零基础入门到进阶项目实战

2、亿级流量Java高并发与网络编程实战

3、Web前端性能优化

4、R语言数据高效处理指南

二、简介


它们都是接口:

  • Statement继承自Wrapper

  • PreparedStatement继承自Statement

  • CallableStatement继承自PreparedStatement

Statement:直接 *** 作sql,不进行预编译,不带参数;

PreparedStatement:进行预编译,可带参数;

CallableStatement:执行存储过程;

SQL的执行需要编译和解析。

Statement每次的执行都需要编译SQL。

PreparedStatement会预编译,会被缓冲,在缓存区中可以发现预编译的命令,虽然会被再次解析,但不会被再次编译,能够有效提高系统性能。

三、statement的四种形式


  • executeQuery

  • executeUpdate

  • ex 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ecute

  • Batch

1、executeQuery

用于产生单个结果集的语句,用于执行 SELECT 语句(SELECT无疑是是使用最多的 SQL 语句) ,返回值为ResultSet。

2、executeUpdate

用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。

executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不 *** 作行的语句,executeUpdate 的返回值总为零。

3、execute

用于执行返回多个结果集、多个更新计数或二者组合的语句。execute对与结果的处理比较麻烦

execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。

返回值指示类型情况:如果下一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在更多结果,则返回 false。

Statement stmt = conn.createStatement();

if(stmt.execute(sql)){

ResultSet rs = stmt.getResultSet();

}else{

log.info(“受影响的行 {}”, stmt.getUpdateCount());

}

(1)ResultSet getResultSet()

以 ResultSet 对象的形式获取当前结果

(2)int getUpdateCount()

以更新计数的形式获取当前结果;如果结果为 ResultSet 对象或没有更多结果,则返回 -1

(3)boolean getMoreResults()

移动到此 Statement 对象的下一个结果,如果其为 ResultSet 对象,则返回 true,并隐式关闭利用方法 getResultSet 获取的所有当前 ResultSet 对象

(4)boolean getMoreResults(int current)

将此 Statement 对象移动到下一个结果,根据给定标志指定的指令处理所有当前 ResultSet 对象;如果下一个结果为 ResultSet 对象,则返回 true

(5)default long getLargeUpdateCount()

4、Batch

(1)void addBatch(String sql)

将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中

(2)void clearBatch()

清空此 Statement 对象的当前 SQL 命令列表

(3)int[] executeBatch()

将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组

对于batch *** 作,简单说就是有一个列表,保存了执行命令。

add是添加方法,clear就是清空方法,execute就是执行列表内命令。

如下面示例,将1000个“张三”分十次插入数据库:

for(int i=0;i<1000;i++){

String sql = “insert into user(id,name,age) values (i,'张三”+i+“',18)”;

stmt.addBatch(sql);

if(i%100 == 0){

stmt.executeBatch();

stmt.clearBatch();

}

}

四、PreparedStatement常用方法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/726089.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存