Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)
上一篇我们说了 Statement 这个接口,但是啊,这个接口不好啊,我们以后都是使用它的一个子接口进行操作的,这篇我们来说一下这个子接口 PreparedStatement
一、认识PreparedStatement
可以看到啊,这个 PreparedStatement 是继承了我们的 Statement ,学过继承的我们都知道,子类有着相比父类更强大的方法或者属性,也就是比父类更好了。我们来看一下这个 PreparedStatement 类,打开 API
找到这个类之后我们可以看到啊,同样也是 java.sql 下面的类,并且这个类继承了 Statement 啊,没有问题
接着来说说这个 PreparedStatement 和这个 Statement 有啥区别呢?
我们看这个技术原理,我们以后不会将这个 SQL 写好让数据库去执行了,而是类似的创建一个 SQL 模板,然后用 ? 代替参数,作为一个占位符,到时候,我们将占位符动态替换,而且啊,执行的速度要快于这个 Statement 对象,提高效率
二、使用 PreparedStatement 对数据库进行增、删、改操作
1. 增
其实这个用法和 Statement 类似,就是改变一点点内容,我们还是往这个 t_log 表中插入一条数据,来看一下怎么去操作
先创建一个类,InsertDataPreparedStatement 然后我们写一个 SQL
但是呢,我们使用这个 ? 占位符去替换这个我们要插入的值,当然啊, id 还是 null ,这个不需要改变
接着我们去获取连接,然后通过连接去获取 PreparedStatement
我们不需要去创建了,直接就能拿到,然后我们怎么给这个占位符赋予值呢?我们是通过这个 PreparedStatement 去使用 set 方式去赋值
可以看到啊,这个 set 有很多种方法,有 setString、setInt 等等,具体怎么选择就要看你数据库表中字段的类型了,这个对应关系可以看我的 MySQL 的课程啊,我都说过,就不多说了
这里我的 content 是一个 varchar ,所以是赋值一个 String 。
然后看参数,第一个参数是 parameterIndex 这个就是占位符的位置,我们从出现的第一个占位符开始计算,从 1 开始,依次往后,这也就是说
如果这个 null 前面还有一个 ? ,那么就是这样的了
我这个是瞎写的啊,仅仅就是一个举例,再改回去~~~
后面的这个 x 就是参数,所以我们写全了就是这样的
这里的时间需要做一下转换,所以就写成这样了
接着调用 executeUpdate() 返回操作记录数,最后做关闭即可
我们来测试一下
可以看到啊,虽然记录插入进去了,但是这个时间是不对的。这里我们需要这样去操作一下
自己去格式化一下时间,然后使用 String 类型去插入值
2. 改
改的话就简单了,我们再创建一个类,然后修改一下 SQL 和 传入的参数就好,直接上代码
是OK的啊,再来看一下删除
3. 删
同样,新弄一个类,然后我们改一下 SQL 语句即可
同样都是没有问题的
大家多练习一下,有问题可以加我 QQ :2100363119.