JDBC【PreparedStatment、批处理、处理二进制、自动主键、调用存储过程、函数】...

本文介绍JDBC中的PreparedStatement对象,批处理技术,处理大文本和二进制数据的方法,获取自动主键列的过程以及如何调用数据库存储过程。重点讨论PreparedStatement相较于Statement的优势,包括SQL预编译、参数化查询及防止SQL注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.PreparedStatement对象

PreparedStatement对象继承Statement对象,它比Statement对象更强大,使用起来更简单

  1. Statement对象编译SQL语句时,如果SQL语句有变量,就需要使用分隔符来隔开,如果变量非常多,就会使SQL变得非常复杂。PreparedStatement可以使用占位符,简化sql的编写

  2. Statement会频繁编译SQL。PreparedStatement可对SQL进行预编译,提高效率,预编译的SQL存储在PreparedStatement对象中

  3. PreparedStatement防止SQL注入。【Statement通过分隔符'++',编写永等式,可以不需要密码就进入数据库】


2.批处理

当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条发送执行,采用批处理以提升执行效率

批处理有两种方式:

  1. Statement

  2. PreparedStatement

通过executeBath()方法批量处理执行SQL语句,返回一个int[]数组,该数组代表各句SQL的返回值

以下代码是以Statement方式实现批处理

以下方式以PreparedStatement方式实现批处理


3.处理大文本和二进制数据

clob和blob

  • clob用于存储大文本

  • blob用于存储二进制数据


MYSQL

MySQL存储大文本是用Test【代替clob】,Test又分为4类

  • TINYTEXT

  • TEXT

  • MEDIUMTEXT

  • LONGTEXT

同理blob也有这4类


下面用JDBC连接MySQL数据库去操作大文本数据和二进制数据


Oracle

下面用JDBC连接Oracle数据库去操作大文本数据和二进制数据

对于JDBC连接Oracle数据库操作CLOB数据,我就不再重复了,操作跟BLOB几乎相同


4.获取数据库的自动主键列

为什么要获取数据库的自动主键列数据?

应用场景:

有一张老师表,一张学生表。现在来了一个新的老师,学生要跟着新老师上课。

我首先要知道老师的id编号是多少,学生才能知道跟着哪个老师学习【学生外键参照老师主键】。



5.调用数据库的存储过程

调用存储过程的语法:

    {call <procedure-name>[(<arg1>,<arg2>, ...)]}

调用函数的语法:

如果是Output类型的,那么在JDBC调用的时候是要注册的。如下代码所示:

参考资料:




如果文章有错的地方欢迎指正,大家互相交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值