您的位置:首页 > 数据 >
Statement、PreparedStatement、CallableStatement有什么区别?三者区别的详情介绍
来源:CSDN 2023-03-03 13:32:08

JDBC:

Statement(接口)      | PreparedStatement(接口)      | CallableStatement(接口) 以上三者为继承关系。

一、Statement


(资料图)

用于执行不带参数的简单SQL语句,每次执行SQL语句,数据库都要执行SQL语句的编译,最好用于仅执行一次查询并返回结果情形,效率高于PreparedStatement

stmt=con.createStatement();            stmt.execute("insert into employee values(1,"jim1",25)");rs=stmt.executeQuery("select * from employee");while(rs.next()){System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getInt(3));}

二、PreparedStatement:预编译的SQL语句的对象

执行的SQL语句中是可以带参数的,并支持批量执行SQL。

由于采用cache机制,则预先编译的语句,就会放在cache中,下次执行相同SQL语句,则直接从cache中取出来

con=DriverManager.getConnection(url,user,password);pstmt=con.prepareStatement("update employee set age=? where id=?");pstmt.setInt(1, 30);pstmt.setInt(2, 3);pstmt.executeUpdate();

三、CallableStatement

提供了用来调用数据库中存储过程的接口,如果有输出参数要注册,说明是输出参数

四、PreparedStatement与Statement区别

①代码可读性和可维护性更好

int id=4;String name="jim4";int age=24;stmt.execute("insert into employee values(""+id+"",""+name+"",""+age+"")");

②安全性更好

在SQL中有万能钥匙"OR 1="1,在Statement中是将参数直接放入SQL语句中连接到一起执行

String name="jim4 "OR 1="1";rs=stmt.executeQuery("select * from employee where name=""+name+""");

在PreparedStatement中,是将jim4 "OR 1="1作为一个字符串赋值给?,作为name字段对应的值,显然这样注入就无从谈起了

③效率更高

每一种数据库都会尽最大努力对预编译语句提供最大的性能优化,因为预编译语句有可能会被重复调用。当下次调用时无需编译,只要将参数直接传入编译过的语句执行代码中就会执行。

关键词:
相关文章
重磅重组!盘江煤电集团更名为贵州能源集团

重磅重组!盘江煤电集团更名为贵州能源集团

贵州盘江精煤股份有限公司关于控股股东更名的公告  本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并更多

2023-03-03 11:03:52
2023年第7周浙江省动力煤价格环比上涨5.7%

2023年第7周浙江省动力煤价格环比上涨5.7%

  据浙江省重要生产资料市场监测系统监测,上周(2月13日—2月19日),浙江省受监测样本企业动力煤价格为88720元吨,价格环比上涨57%。节后更多

2023-03-03 10:00:22
金融护航,助解燃“煤”之急

金融护航,助解燃“煤”之急

  近日,进出口银行天津分行成功为天津市某重点煤电生产企业发放贷款。作为政策性银行,该行始终以服务地方发展为己任,在得知企业急需支付更多

2023-03-03 10:07:20
每日热文:2月第三周山西省煤炭价格环比下跌2.9%

每日热文:2月第三周山西省煤炭价格环比下跌2.9%

  据山西省商务厅生产资料市场监测数据显示,2月第三周(2月13日-19日),山西省煤炭均价124639元吨,环比下跌29%。其中,无烟煤2号均价1475更多

2023-03-03 09:53:44
2月第四周陕西省煤炭均价微跌

2月第四周陕西省煤炭均价微跌

  据商务部重要生产资料市场监测系统显示,2月18日至2月24日,陕西省煤炭均价16532元吨,环比下跌05%。其中:烟煤15638元吨,环比下跌01%;更多

2023-03-03 09:58:03
2月第四周天津市煤炭价格环比持平

2月第四周天津市煤炭价格环比持平

  据天津市市场运行监测数据显示,2月份第四周(2月20日-2月27日),天津市煤炭均价为732元吨,环比持平。全球煤炭供给缺乏弹性,供需格局偏更多

2023-03-03 10:07:39
2023年2月钢铁行业PMI重回50%以上

2023年2月钢铁行业PMI重回50%以上

  据中物联钢铁物流专业委员会发布的数据,2023年2月份钢铁行业PMI为501%,环比回升35个百分点,连续3个月环比上升,重回50%以上,显示钢铁更多

2023-03-03 09:09:08
中钢协:严格控制无产能的新建电炉

中钢协:严格控制无产能的新建电炉

  2023年3月1日,中国钢铁工业协会组织召开电炉炼钢发展专项研讨会。钢协副会长骆铁军主持会议,工业和信息化部原材料司钢铁处副处长时一钧更多

2023-03-03 09:10:49
1月重庆主力火电厂耗煤283.63万吨 增长25.18%

1月重庆主力火电厂耗煤283.63万吨 增长25.18%

  重庆市经信委数据显示,1月份,全市主力火电厂购煤19104万吨,同比增长1982%。  其中:陕西11559万吨,同比增长2961%;海进江2679万吨,更多

2023-03-03 08:54:51
2022年陕西省原煤产量过200万吨企业94家

2022年陕西省原煤产量过200万吨企业94家

  陕西省统计局消息,2022年,面对煤炭保供工作的严峻形势,陕西省委、省政府统筹稳增长和调结构,着力增强能源供应链安全性和稳定性,科学更多

2023-03-03 09:16:06