面试题:PreparedStatement和Statement的区别

PreparedStatement 接口继承 Statement接口,PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率。

Statement常用方法

ResultSet executeQuery(String sql)     执行SQL查询并获取到ResultSet对象
int executeUpdate(String sql)          可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数
boolean execute(String sql)            可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet

ResultSet常用方法

boolean next() 将游标从当前位置向下移动一行
boolean previous() 游标从当前位置向上移动一行
void close() 关闭ResultSet 对象
int getInt(int colIndex)int形式获取结果集当前行指定列号值
int getInt(String colLabel)int形式获取结果集当前行指定列名值
float getFloat(int colIndex)float形式获取结果集当前行指定列号值
float getFloat(String colLabel)float形式获取结果集当前行指定列名值
String getString(int colIndex) 以String 形式获取结果集当前行指定列号值
String getString(String colLabel) 以String形式获取结果集当前行指定列名值

(1)提高了代码的可读性和可维护性
虽然使用PreparedStatement来代替Statement会多些几行代码,但避免了繁琐麻烦有容易出错的SQL语句拼接,提高了代码的可读性和可维护性

(2)提高了SQL语句执行的性能
创建Statement对象时不使用SQL语句做参数,不会解析和编译SQL语句,每次调用方法执行SQL语句时要进行SQL语句解析和编译操作,即使操作相同仅仅是数据不同。
创建PreparedStatement对象时使用带占位符的SQL语句做参数,会解析和编译该SQL语句,在通过setXxx方法给占位符赋值后执行SQL语句时无需再解析和编译SQL语句,直接执行即可。多次执行相同操作可以大大提高性能。

(3)提高了安全性
PreparedStatement使用预编译语句,传入的任何数据都不会和已经预编译的SQL语句进行拼接,避免了SQL注入攻击

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值